Page 1 sur 1

[Ajax] Alimenter une <table> ac le résultat d'1 requet

Posté : 23 juil. 2007, 11:53
par Eliphas
Salut,

je connais très peu Ajax et pour utiliser un peu cette technologie, j'essaie de coder des choses que je sais faire en PHP/SQL classique.

Ce que j'aimerais faire, donc, c'est alimenter un tableau avec le résultat d'une requête SQL que je compte traiter en Ajax. Dans ma page j'ai donc

Code : Tout sélectionner

<table align="center" id="liste"></table>
La fonction qui est appelée en cliquant sur un lien est la suivante :

Code : Tout sélectionner

function chercheCraftDispo(id_metier){ var xhr_object = null; if(window.XMLHttpRequest) //pour Firefox xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) //Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else{ alert("Votre navigateur ne supporte pas les requetes"); return; } xhr_object.open("POST","ajax/chercheCraft.php",true); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) eval(xhr_object.responseText); } xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); var data = "id_metier="+id_metier; xhr_object.send(data); }
Rien de très sorcier apparement, c'est le minimum syndical pour envoyer quelque-chose à une autre page. Cette autre page est la suivante :

Code : Tout sélectionner

header('Content-type: text/html; charset=iso-8859-1'); $id_metier = $_POST['id_metier']; echo "ligne = document.createElement ('tr');"; echo "cell = document.createElement ('td');" echo "texte = document.createTextNode ('$id_metier');"; echo "cell.appendChild (texte);"; echo "ligne.appendChild(cell);"; echo "document.getElementById ('liste').appendChild (ligne);";
et je vous le donne dans le mille, rien ne se passe sur ma page alors que j'attends une ligne avec la variable $id_metier dans mon tableau. Le code Javascript fonctionne quand il est dans une page classique (il ajoute bien des lignes au tableau) mais là, ça ne veut pas.

Je ne vois pas trop comment résoudre ça, c'est probablement simple mais comme je n'ai pas d'expérience en Ajax, je ne sais pas ce qui peut le bloquer.

Merci pour tout aide apportée :)

Posté : 23 juil. 2007, 15:11
par Ryle
Déjà, première vérification, test la valeur retournée par ajax et vérifie que le code renvoyé correspond bien à ce que tu attends :
if(xhr_object.readyState == 4) {
               alert(xhr_object.responseText);
               eval(xhr_object.responseText); 
}
En y regardant de plus près : vire également les espaces superflux :
echo "document.getElementById_('liste').appendChild_(ligne);";
(A noter également, que pour faire simple, ton script php peut très bien renvoyer directement du code html qu'il te suffira d'ajouter ou d'écraser dans ton tableau avec innerHTML :))