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>