Problème de formulaire utilisant du JS

scrugeon Messages postés 6 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 30 janvier 2009 - 29 janv. 2009 à 13:33
scrugeon Messages postés 6 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 30 janvier 2009 - 30 janv. 2009 à 10:12
Bonjour tout le monde,

Alors voilà je me lance à la découverte du JS et de l'AJAX et je galère un peu sur un formulaire.

Je vous explique un peu mon problème :
J'ai formulaire qui est contenu dans mon "index.php".
Quand je valide ce formulaire, je lance un vérification en javascript (ça c'est bon ça marche nikel).
Ensuite, si il y a un champ non rempli, j'affiche une alerte (ça marche aussi).
Quand
il n'y a pas d'erreurs, je passe les données du formulaire vers un
second fichier "suite.php" qui à terme fera lui aussi une vérification
des données (en PHP) et entrera les données dans la base.

Voilà
donc le principe. Là où j'ai un problème (dans le fichier "ajax_go.js"
je pense), c'est que je n'arrive pas à faire apparaître le fichier
"suite.php" dans le div prévu à cet effet (nom du div : info).



Je vous mets le code de mes fichiers ci-dessous.

     index.php

<html>
<head>
<script src= "javascript/ajax.js" type="text/javascript"></script>
<script src="javascript/ajax_go.js" type="text/javascript"></script>
</head>

<?php
if (isset($_POST['nom']))
    {
    $nom=$_POST['nom'];
    }
if (!isset($_POST['nom']))
    {
    $nom="";
    }
if (isset($_POST['prenom']))
    {
    $prenom=$_POST['prenom'];
    }
if (!isset($_POST['prenom']))
    {
    $prenom="";
    }
?>

    <form name="formulaire" method="POST" onSubmit="verif_4()">
           
        <fieldset><legend>Inscription</legend>
           
       

       
           
        <label>Nom :</label> >
           
       
   
       

           
   
    <label>Prénom :</label> >
           
       

       

           
       
           
       

           
        </fieldset>
           
    </form>

</html>

     suite.php

<?php
echo $_POST['Nom'];
echo "
";
echo $_POST['Prenom'];
?>

     ajax.js

function getXhr()
    {
    var xhr = null;
    if(window.XMLHttpRequest) // Firefox et autres
        xhr = new XMLHttpRequest();
    else if(window.ActiveXObject)
        { // Internet Explorer
        try
            {
            xhr = new ActiveXObject("Msxml2.XMLHTTP");
            }
        catch (e)
            {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
    else
        { // XMLHttpRequest non supporté par le navigateur
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
        xhr = false;
        }
    return xhr;
    }
     ajax_go.js

function verif_4()
    {
    // Préparation du message d'erreur
    message ="Vous devez remplir le(s) champ(s) suivant(s) :\n\n";
    // Initialisation de la variable d'erreur
    erreur=0;
       
    // Vérification de la variable nom
    if (document.formulaire.nom.value=="")
        {
        // modification du message d'erreur
        message=message+"               - nom\n";
        // modification de la variable d'erreur
        erreur=1;
        }
       
    // Vérification de la variable prenom
    if (document.formulaire.prenom.value=="")
        {
        // modification du message d'erreur
        message=message+"               - prenom\n";
        // modification de la variable d'erreur
        erreur=1;
        }
       
    // Si une erreur a été détectée
    if (erreur==1)
        {
        // On affiche le message
        alert(message);
           
        // on renvoie les valeurs saisies par l'utilisateur pour lui éviter de resaisir les infos qu'il a déjà saisi
        xhr.open("POST","index.php",true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        nom=document.formulaire.nom.value;
        prenom=document.formulaire.prenom.value
        xhr.send("nom="+nom+"prenom"+prenom);
        }
       
    // Si il n'y a pas d'erreur, on charge suite.php dans le div info.    C'est donc ici que ça ne marche pas.
    if (erreur==0)
        {
        var xmlHttpReq = false;
        var self = this;
        // Mozilla/Safari
        if (window.xmlHttpRequest)
            {
            self.xmlHttpReq = new XMLHttpRequest();
            }
        // IE
        else if (window.ActiveXObject)
            {
            self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
            }
        self.xmlHttpReq.open('POST', 'suite.php', true);
        self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        self.xmlHttpReq.onreadystatechange = function()
            {
            if (self.xmlHttpReq.readyState == 4)
                {
                document.getElementById("info").innerHTML=(self.xmlHttpReq.responseText);
                }
            }
        nom=document.formulaire.nom.value;
        prenom=document.formulaire.prenom.value
        xhr.send("nom="+nom+"prenom"+prenom);
        }
    }

Si quelqu'un pouvait me renseigner sur mon erreur, ce serait super cool.
Merci d'avance pour vos réponses.

Sylvère

Malheur à qui me frôle, bonheur à qui me prend

4 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
29 janv. 2009 à 13:43
bonjour,
bah... tu n'aurais pas déjàposé la question ici ?
et personne n'a répondu ?
c'est parce que tu nous colles tout ton code et : démerdez vous !
enfin.. moi c'est pour ça que je n'ai pas répondu

pour ta question, "il suffit" de coller le ?.responseText
dans le innerHTML du div et point barre
pour ton erreur... pas regardé

Cordialement

          [mon Site] [M'écrire] Bul         
0
scrugeon Messages postés 6 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 30 janvier 2009
30 janv. 2009 à 09:33
Bonjour,

En effet, la question y est deux fois.

Désolé d'avoir fait un article qui t'as paru à la va que je t'en fous mais ce n'était pas du tout le but. Il est vrai que j'aurai du couper le code. Je n'ai pas eu de réponses, tant pis. Je saurai mieux m'y prendre pour la prochaine fois que j'aurai une question à poser sur ce forum.

En tout cas merci et à une prochaine fois.

Cordialement

Sylvère

Malheur à qui me frôle, bonheur à qui me prend
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
30 janv. 2009 à 09:55
j'ai pourtant répondu pour mettre dans le div !

et tu as quelques erreurs :

1° xhr.send("nom= "+nom+" & prenom"+prenom); si tu veux gérer cela facilement coté php
2° tu fais une requête en asynchrone, ...open(...true)
    il faut attendre la réponse de fin de traitement d'ajax  et
        ne pas tester derrière le send
du style :
       ....
       xml.onreadystatechange = function()
                {    if(xml.readyState == 4)
                    {    on peut traiter xml.responseText;  }
                }
                ....
                xml.open("POST", "http://www.google.com/translate_t", true);

pas regardé plus

[mon Site][M'écrire]Bul
0
scrugeon Messages postés 6 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 30 janvier 2009
30 janv. 2009 à 10:12
Ok merci pour ces infos.

Cordialement

Malheur à qui me frôle, bonheur à qui me prend
0