Bonjour
J'essaye d'afficher les résultats d'une requête SQL ligne par ligne (au fur et à mesure de l'exécution de ma requête), sans avoir à rafraîchir ma page.
Voici mon code qui appelle la fonction js ShowUser (simplifié) - fichier geocode.php
Voici le code JS - fichier select.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <p> <div id="719"><b>719 - Usersss info will be listed here.</b></div> </p> <p> <div id="727"><b>727-User info will be listed here.</b></div> </p> <script type="text/javascript" >showUser(719)</script> <script type="text/javascript" >showUser(727)</script>
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
52
53
54
55
56
57
58 var xmlHttp var ID function showUser(str) { xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Browser does not support HTTP Request") return } var url="getcoord.php" url=url+"?nrID="+str url=url+"&sid="+Math.random() ID=str xmlHttp.open("GET",url,true) xmlHttp.onreadystatechange=stateChanged xmlHttp.send(null) } function stateChanged() { //prompt("NO",ID) if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { //prompt("YES",ID) document.getElementById(ID).innerHTML=xmlHttp.responseText } } function GetXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { //Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; }
La requête sql qui recupère les infos à afficher (simplifiée) - fichier getcoord.php:
Si je ne mets pas des alert dans le js, seul le dernier enregistrement de la requête s'affiche.
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 echo "<table border='1'> ... while ($row = @mysql_fetch_assoc($result)) { ..... $geocode_pending = false; echo "<tr>"; echo "<td>" . $row['id'] . " </td>"; echo "<td>" . $row['name'] . " </td>"; echo "<td>" . $row['address'] . " </td>"; echo "<td>" . $row['zip'] . " </td>"; echo "<td>" . $row['city'] . " </td>"; echo "<td>" . $row['state'] . "TEST </td>"; echo "<td>" . $row['country'] . " </td>"; echo "<td>" . $status . " = failed to geocoded</td>"; echo "</tr>"; } echo "</table>";
Si je mets des alert, tous les enregistrements sont affichés
J'ai modifié le code js de la manière suivante :
Aucun résultat n'est affiché
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 xmlHttp.open("GET",url,false) xmlHttp.onreadystatechange=stateChanged xmlHttp.send(null) } function stateChanged() ....
Comment faire pour attendre que la fin de l'exécution du premier appel de la fonction js avant de passer à la suivante (est-ce la solution ?) ?
Merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <script type="text/javascript" >showUser(719)</script> <script type="text/javascript" >showUser(727)</script>
Patrice
Partager