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 à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 12
    Points
    12
    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 averti
    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
    Points : 350
    Points
    350
    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 à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Merci ca marche.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 12
    Points
    12
    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 à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Points : 12
    Points
    12
    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 expérimenté 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
    Points : 1 388
    Points
    1 388
    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