IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] AJAX et les FORM


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Par d�faut [AJAX] AJAX et les FORM
    Bonjour.

    Voici mon probleme:

    Je voudrai pouvoir envoy� un mail par mon site web, mon site est bas� sur ajax, chaque lien fait une requ�te... etc.. Vous l'avez bien compris.

    Tout se pass� bien, les balises que j'envoy� dans les requete �tait bien interpr�t�. Mais voici venir le <form> qui casse tout mes espoirs.

    Voici le code php.

    <?php

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    echo 'debut';
    echo '<table width="500" border="0" cellspacing="0" cellpadding="0">
    <form action="envoi.php" method="post" enctype="application/x-www-form-urlencoded" name="formulaire">
    <tr>                
    <td colspan="3">Envoyer un message</td>
    </tr>
    <tr>
    <td><div align="right">Votre nom</div></td>
    <td colspan="2"><input type="text" name="nom" size="45" maxlength="100"></td>
    </tr>
    <tr>                
    <td width="17%"><div align="right">Votre mail</div></td>
    <td colspan="2"><input type="text" name="mail" size="45" maxlength="100"></td>
    </tr>
    <tr>                
    <td><div align="right">Sujet :</div></td>
    <td colspan="2"><input type="text" name="objet" size="45" maxlength="120"></td>
    </tr>
    <tr>                
    <td><div align="right">Message :</div></td>
    <td colspan="2"><textarea name="message" cols="50" rows="10"></textarea></td>
    </tr>
    <tr>                
    <td></td>
    <td width="42%"><center><input type="reset" name="Submit" value="Réinitialiser le formulaire"></center></td>
    <td width="41%"><center><input type="submit" name="Submit" value="Envoyer"></center></td>
    </tr>
    </form>
    </table>';
     
    ?>
    Le JS:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
     function ajax(url)
    {
        var xhr=null;
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        //on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function() { addtodiv(xhr); };
     
        //on appelle le fichier reponse.txt
        xhr.open("GET", url, true);
        xhr.send(null);
    }
     
    function addtodiv(xhr)
    {
     
    	var docXML= xhr.responseText;
    	document.getElementById("dData").innerHTML = docXML;
     
     
     
    }
    Et le HTML:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    <a class="nouscontacter" onclick="javascript:ajax('./../php/contact.php');" href="#" >► Nous contacter ◄</a>
     
    <div id="dData" style="margin-top: 100px; margin-left: 25px; margin-right: 25px;" ></div>
    Donc j'ai fait plusieur petit teste:
    - Si je met dans le code php, juste un tableau avec un form et un imput simple dedans cela fonctionne.
    - Au niveau de la place que cela prend, ca fonctionne aussi: j'ai fait une page identique mais static, avec un include 'contact.php'; et ca fonctionne aussi.


    Je ne sais plus trop quoi faire, merci de m'aid�.

    Titioux.

  2. #2
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2007
    Messages
    340
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 340
    Par d�faut
    Attention tu as une erreur dans ton Ajax
    N'oubli pas le readState==4
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     function ajax(url)
    {
        var xhr=null;
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        //on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function()
        {
          if (xhr.readyState == 4)
            addtodiv(xhr);
        }
     
        //on appelle le fichier reponse.txt
        xhr.open("GET", url, true);
        xhr.send(null);
    }
    Autrement je n'ai pas tr�s bien compris le probl�me que tu rencontres

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Par d�faut
    Merci ca marche.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Par d�faut
    Un petite derni�re chose.

    Je voudrai r�cup�r� les valeur des inputs directement dans la m�me page g�n�r� par AJAX. Quand on clic sur le bouton ca r�cup�re les valeurs et les affich�.

    J'ai pens� a un �quivalant a getelementbyid() du JS en PHP, mais je ne connais pas assez bien.

    Ou alors a l'envoie des valeurs au serveur par ajax mais la non plus je vois pas trop comment.


    Merci d'avance
    Titioux.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Par d�faut
    apr�s quelque recherche j'ai fini par faire ca:

    JS:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function contactajax(){
    	 var xhr=null;
    	 var data="";
    	 var docXML
    	 data = "nom="+document.getElementById("nom").value+"&prenom="+document.getElementById("prenom").value+"&email="+document.getElementById("email").value+"&sujet="+document.getElementById("sujet").value+"&message="+document.getElementById("message").value;	
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
    	xhr.open("POST", "./../php/send.php", true);
        //on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function() { 
    	if (xhr.readyState == 4){
    	docXML= xhr.responseText;
    	document.getElementById("resultat").innerHTML = docXML;}
    	}
        xhr.send(data);
    }
    le PHP:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
    $nom=$_POST["nom"];
    $prenom=$_POST["prenom"];
    $email=$_POST["email"];
    $sujet=$_POST["sujet"];
    $message=$_POST["message"];
     
    echo '<br />nom='.$nom;
    echo '<br />prenom='.$nom;
    echo '<br />email='.$nom;
    echo '<br />sujet='.$nom;
    echo '<br />message='.$nom;
     
    echo '<br />debut<br />';
    	 echo "Données reçues en POST:".$_POST; 
       foreach($_POST as $v) {
       echo $v;
        echo strrev(($v)).":"; }
     
    echo '<br />fin';
    le html:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <form action="" method="post" enctype="application/x-www-form-urlencoded" name="formulaire"><table>
    <tr>                
    <td colspan="3"><center><h4>Nous envoyer un message</h4></center><br /></td>
    </tr>
    <tr>
    <td><div align="right">Nom  : </div></td>
    <td colspan="2"><input type="text" onkeyup="javascript:controltextnom(this,\'imgnom\');" id="nom" name="nom" size="45" maxlength="100" value=""><img width="15px" height="15px" src="../images/tickrouge.png" id="imgnom" name="imgnom" alt="tick rouge" /></td>
    </tr>
    <tr>
    <td><div align="right">Prenom  : </div></td>
    <td colspan="2"><input type="text" onkeyup="javascript:controltextprenom(this,\'imgprenom\');" id="prenom" name="prenom" size="45" maxlength="100" value=""><img src="../images/tickrouge.png" width="15px" height="15px" id="imgprenom" name="imgprenom" alt="tick rouge" /></td>
    </tr>
    <tr>                
    <td width="20%"><div align="right">Votre mail  : </div></td>
    <td colspan="2"><input type="text" id="email" name="email" size="45" maxlength="100" onkeyup="javascript:controlmail(this);"><img src="../images/tickrouge.png" width="15px" height="15px" id="imgemail" name="imgemail" alt="tick rouge" /></td>
    </tr>
    <tr>                
    <td><div align="right">Sujet  : </div></td>
    <td colspan="2"><input type="text" name="sujet" id="sujet" size="45" maxlength="120" onkeyup="javascript:controlvidesujet(this, \'imgsujet\');"><img src="../images/tickrouge.png" width="15px" height="15px" id="imgsujet" name="imgsujet" alt="tick rouge" /></td>
    </tr>
    <tr>                
    <td><div align="right">Message : </div></td>
    <td colspan="2"><textarea name="message" id="message" cols="50" rows="10" maxlength="300" onkeyup="javascript:controlvidemessage(this, \'imgmessage\');"></textarea><img style="position: absolute; top:auto; left: auto;" src="../images/tickrouge.png" width="15px" height="15px" id="imgmessage" name="imgmessage" alt="tick rouge" /></td>
    </tr>
    <tr>                
    <td></td>
    <td width="42%"><center><input type="buttom" onclick="javascript:init();" name="Submit" value="Réinitialiser le formulaire"></center></td>
    <td width="41%"><center><input type="buttom" onclick="javascript:contactajax();"  id="envoyer" name="envoyer"  value="Envoyer"></center></td>
    </tr></table>
    </form>
     
    <center><div id="resultat" ></div></center>
    Voici le resultat:
    Notice: Undefined index: nom in E:\logiciel\EasyPHP 2.0b1\www\accessolaire\php\send.php on line 3

    Notice: Undefined index: prenom in E:\logiciel\EasyPHP 2.0b1\www\accessolaire\php\send.php on line 4

    Notice: Undefined index: email in E:\logiciel\EasyPHP 2.0b1\www\accessolaire\php\send.php on line 5

    Notice: Undefined index: sujet in E:\logiciel\EasyPHP 2.0b1\www\accessolaire\php\send.php on line 6

    Notice: Undefined index: message in E:\logiciel\EasyPHP 2.0b1\www\accessolaire\php\send.php on line 7

    nom=
    prenom=
    email=
    sujet=
    message=
    debut
    Donn�es re�ues en POST:Array
    fin


    Donc voila je n'arrive pas a r�cup�r� les valeurs du POST. J'ai regard� sur ce forum mais aucun solution a mon probleme.

    Merci de m'aid�.
    titioux.

  6. #6
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par d�faut
    Il te manque ce header dans ta requete:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [AJAX] Encore les FORM & TEXTAREA
    Par NADA740 dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 12/12/2006, 10h06
  2. [AJAX] Ajax et les caract�res sp�ciaux
    Par Moloc'h dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 27/01/2006, 14h02
  3. [AJAX] Ajax et les accents
    Par nico-pyright(c) dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 09/12/2005, 20h09
  4. [AJAX] Probl�mes avec les caract�res accentu�s
    Par marti dans le forum Servlets/JSP
    R�ponses: 10
    Dernier message: 26/10/2005, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo