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 :
Avec un alert sur le readystate, on exécute la séquence 124 et non 1234 comme l'annoncent tous les tutoriels ... Pourquoi ?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
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électionner un vé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é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>
Partager