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 :

XMLHttpRequest - Passage du statut 2 à 4 => erreur de statut


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 90
    Par défaut XMLHttpRequest - Passage du statut 2 à 4 => erreur de statut
    Bonjour,

    Suite à un premier message sans réponse, je me permets de relancer le sujet ...

    A partir d'une page HTML, je veux commander l'importation de données d'un fichier XML vers ma base de données MySQL.

    Pour cela ma page HTML contient un formulaire et 2 listes déroulantes.
    Sur le submit, j'exécute mon code javascript. Tout se passe correctement jusqu'au moment ou je veux effectuer ma fonction une fois la réponse du serveur reçu.
    En effet, j'ai l'erreur :
    Erreur : [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://localhost/include/scripts_js/import.js :: anonymous :: line 42" data: no]
    Fichier source : http://localhost/include/scripts_js/import.js
    Ligne : 42
    Avec un alert sur le readystate, on exécute la séquence 124 et non 1234 comme l'annoncent tous les tutoriels ... Pourquoi ?

    Après recherches sur notre ami google, j'ai lu que si l'on enlève les balises <form> le message d'erreur disparait ... ce qui est VRAI !

    Cependant dans mon code JS je dosi récupérer les valeurs (le texte) de mes SELECT sélectionnés. COmment faire sans els balises <form> ?

    Comment rsoudre ce problème d'état sur le statut ?

    Voci mon code 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    function gophp()
    {
    //On définit l'objet qui va intérroger le serveur
    var xhr = getXhr();
     
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function()
    {
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    alert(xhr.readyState);
    if(xhr.readyState == 4 && xhr.status == 200)
    {
    	//Affichage de la liste dans la zon de liste
    	var docXML= xhr.responseText;
    	alert(docXML);
     
           //On écrit maintenant les résultats dans les champs textes définis.
    	var items = docXML.getElementsByTagName("mouvement");
    	alert(items);
     
    	for (i=0;i<items.length;i++)
    	{
    		alert("item : "+i);
    		var chaine="";
    		var temp = docXML.getElementsByTagName('date');
    		chaine = temp[0].firstChild.nodeValue;
    		temp = docXML.getElementsByTagName('code');
    	        chaine = chaine+" ; "+temp[0].firstChild.nodeValue;
    		temp = docXML.getElementsByTagName('prix');
    		chaine = chaine+" ; "+temp[0].firstChild.nodeValue;
    		document.writeln(chaine);
    	}
    }
    }
     
    	// Ici on va voir comment faire du post
    	var fichier = "/include/scripts_php_ajax/importer_csv.php";
    	xhr.open("POST",fichier,true);
    	// ne pas oublier ça pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
     
    //On récupère le critère de recherche.
    code = document.form.s_veh.options[document.form.s_veh.options.selectedIndex].text;
    tva = document.form.s_tva.options[document.form.s_tva.options.selectedIndex].text;
     
    //On envoie le  type de véhicule choisi au ficier PHP pour la requete.
    var data = "code="+code+"&tva="+tva;
    xhr.send(data);
    }

    puis mon code 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
     
    <form name="form" enctype="multipart/form-data" method="post" action="">
         <table width="560" border="0" align="center">
          <tr>
              <th width="322" scope="row" align="left">S&eacute;lectionner un v&eacute;hicule </th>
               <td width="228"><select name="s_veh">
    	<option>- -</option>
    	<?php
            $requete = "SELECT code FROM vehicules ORDER BY code";
            $res  = mysql_query($requete);
            while ($row=mysql_fetch_array($res))
            {               echo "<option>$row[0]</option>";                }
             ?>
              </select></td>
             </tr>
             <tr>
                <th scope="row" align="left">S&eacute;lectionner un taux de TVA   </th>
       <td><select name="s_tva">
    	<option>- -</option>
    	 <?php
            $requete = "SELECT taux FROM tva ORDER BY taux";
            $res  = mysql_query($requete);
            while ($row=mysql_fetch_array($res))
            {       $tva = $row[0]*100; echo "<option>$tva</option>";               }
              ?>
                </select></td>
                </tr>
              </table></p>
    	<p align="center"><input type="submit" name="importer" value="importer" onClick="VerifierFormulaire();"></p>
    </form>

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 90
    Par défaut
    Je complète le sujet :

    Si dans ma balise de formulaire je demande target="_blank" alors l'affichage est ok !!!

    Donc pour résumer, je dois afficher mes résultats dans une autre fenêtre !!

    POURQUOI ?

    Pour le moment c'est le seul moyen que j'ai pour pouvoir exécuter la séquence 1234 sur le OnRedayStateChange

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    peut tu remplacer le bouton submit par un simple bouton et faire le submit dans la fonction
    xhr.onreadystatechange = function()
    {
    ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 90
    Par défaut
    Effectivement, j'ai découvert cela ce matin.

    Si je vire le submit et que je fais simplement un évènement sur un bouton quelconque, cela fonctionne !!!!!

    Maiq quelqu'un a t-il une xplication pour ce problème avec un submit ?

  5. #5
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    ton submit valide le formulaire sur lui même (action vide). lorsque la page se recharge les actions javascript "disparaissent".

Discussions similaires

  1. [AC-2007] Passage de 2003 a 2007 et erreur 13 incompatibilte de type
    Par Bernard67 dans le forum VBA Access
    Réponses: 4
    Dernier message: 13/12/2011, 07h49
  2. Erreur avec un xmlhttpRequest
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/12/2005, 12h11
  3. Réponses: 7
    Dernier message: 02/12/2005, 13h02
  4. Erreur 873 de rsync pour un passage cron
    Par GLDavid dans le forum Administration système
    Réponses: 18
    Dernier message: 14/11/2005, 14h58
  5. Erreur formulaire avec XMLHttpRequest
    Par MathieuG dans le forum Langage
    Réponses: 9
    Dernier message: 21/09/2005, 11h43

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