J'essaie d'utiliser la fonction jQuery.post() pour récupérer des données. Mais je n'obtiens aucune sortie.Impossible d'extraire des données à l'aide de jQuery.post
J'ai un code HTML qui affiche une table. Cliquer sur cette table devrait déclencher un événement jQuery.post.
Mon fichierscript ressemble à ceci:
jQuery(document).ready(function() {
jQuery('#storeListTable tr').click(function() {
var storeID = this.cells[0].innerHTML; //This gets me the rowID for the DB call.
jQuery.post("../functions.php", { storeID: "storeID" },
function(data){
alert(data.name); // To test if I get any output
}, "json");
});
});
Mon fichier PHP ressemble à ceci:
<?php
inlcude_once('dal.php');
//Get store data, and ouput it as JSON.
function getStoreInformation($storeID)
{
$storeID = "9";//$_GET["storeID"];
$sl = new storeLocator();
$result = $sl->getStoreData($storeID);
while ($row = mysql_fetch_assoc($result)) {
{
$arr[] = $row;
}
$storeData = json_encode($arr);
echo $storeData; //Output JSON data
}
?>
J'ai testé le fichier PHP, et il transmet les données au format JSON. Mon seul problème maintenant est de retourner ces données à mon javascript.
- étant donné que le javascript se trouve dans le répertoire/js /, est-il correct d'appeler le fichier php en utilisant '../'?
- Je ne pense pas que je passe correctement le paramètre storeID. Quelle est la bonne façon?
- Comment puis-je appeler la fonction getStoreInformation ($ storeID) et passer le paramètre? L'exemple jQuery sur jQuery.com a la ligne suivante: .post $ ("test.php", {func: "getNameAndTime"} Est-ce le getNameAndTime le nom de la fonction dans test.php
? .
J'ai obtenu un peu plus loin j'ai déplacé le code à l'intérieur de la fonction(), à l'extérieur Alors maintenant, le code php est exécuté lorsque le fichier est exécuté
Mon script js ressemble maintenant à ceci..:
jQuery('#storeListTable tr').click(function() {
var storeID = this.cells[0].innerHTML;
jQuery.post("get_storeData.php", { sID: storeID },
function(data){
alert(data);
}, "text");
});
Il en résulte une fenêtre d'alerte qui fournit les données du magasin sous forme de chaîne au format JSON. (parce que j'ai changé "json" en "texte").
La chaîne JSON ressemble à ceci:
[{"id":"9","name":"Brandstad Byporten","street1":"Jernbanetorget","street2":null,"zipcode":"0154","city":"Oslo","phone":"23362011","fax":"22178889","www":"http:\/\/www.brandstad.no","email":"[email protected]","opening_hours":"Man-Fre 10-21, L","active":"pending"}]
Maintenant, ce que je veux vraiment, est de ouput les données de JSON. Donc, je remplacerais "text" par "json" et "alert (data)" par "alert (data.name)". Alors maintenant, mon script js ressemblera à ceci:
jQuery('#storeListTable tr').click(function() {
var storeID = this.cells[0].innerHTML;
jQuery.post("get_storeData.php", { sID: storeID },
function(data){
alert(data.name);
}, "json");
});
Malheureusement, la seule sortie que je reçois, est « non défini ». Et si je change "alert (data.name);" "alert (data);", la sortie est "[object Object]".
Comment puis-je afficher le nom du magasin?
Dans le fichier PHP, j'ai essayé de définir $ storeID = $ _GET ["sID"]; Mais je n'ai pas la valeur. Comment puis-je obtenir la valeur qui est passée en paramètre dans jQuery.post? (actuellement je hardcoded le storeID, pour le test)
J'ai essayé d'utiliser Firebug. Mais ne comprends pas comment je peux déboguer javascripts :( – Steven
Euh .. jamais vu. Trouvé Message: mon sID est undefined Réponse: Contient des informations de magasin en notation JSON – Steven