Comment puis-je retourner un tableau/objet json contenant des objets json via une requête ajax php appeler?
Fondamentalement, ce que je suis en train de faire est de retourner les résultats d'une requête mysql. Je sais comment mettre chaque ligne de la requête de ses résultats dans son propre objet JSON, maintenant, je suis juste mal avec une manière de sorte que si il y a plusieurs lignes de résultats à retourner à mon jquery.
Dans mon jquery que j'appelle le $.ajax() de la fonction et je n'ai pas de problèmes avec ça. Mon problème réside dans la réussite de la partie, où je veux être capable de faire quelque chose comme ce qui suit:
$.ajax ({
type: "POST",
url:"select.php",
data: {columns : "*",
table : "tbUsers",
conditions : "" },
success: function(results) {
foreach (results as obj)
{
JSON.parse(obj);
$("#page").html(obj.id + " " + obj.name);
}
}
});
Je veux être en mesure de parcourir le résultat de la variable comme un tableau d'objets JSON. Les résultats de la variable est une chaîne qui se compose de Toutes les données de sortie du fichier php. Laissez donc ma question plutôt alors, comment puis-je le modifier de sorte que la fonction est un tableau ou comment dois-je le changer?
Mon fichier php actuellement renvoie à quelque chose comme ceci:
[{"0":1, "1":"name1", "id":1, "name":"name1"} , {"0":2, "1":"name2", "id":2, "name":"name2"}]
JSON.parse(obj);
devrait être hors de la boucle et quel est le problème dans le succès ?JavaScript n'a pas
foreach
boucle.pourquoi ne pas envoyer une seule grande chaîne json au lieu de plusieurs petites?
Mais il ne fait pas de mal de le préciser quand même. Si quelque chose, il évite les problèmes avec aucun des effets secondaires. En le précisant, si votre php échoue et renvoie rien, il enverra votre ajax pour l'erreur de rappel plutôt que de succès, avec une chaîne de résultat.
OriginalL'auteur wizzkid | 2013-09-26
Vous devez vous connecter pour publier un commentaire.
De la
php
vous pouvez utiliserDans votre
success
de rappel vous pouvez utiliserUne Démo pour vous aider à comprendre.
en quoi est
.done
mieux quesuccess:
? bien sûr,.done
a plus d'utilisations, mais il n'est pas "mieux", c'est juste une autre façon de faire.OriginalL'auteur The Alpha
Essayez quelque chose comme:
Note le dataType: "json" - Ce qui va analyser tout cela dans un objet JSON(s) pour vous.
Édité, désolé ce n'était pas trop clair.
ok... mais il n'y a pas une telle chose comme un objet JSON. c'est juste un objet. Et, depuis qu'il a a faire avec une requête sql, je parie que le résultat est renvoyé comme un tableau d'objets, et il n'est pas suggéré de faire une boucle sur un tableau avec une pour en boucle.
dataType: "json"
est inutile si le PHP définit le type de contenu pourapplication/json
. L'un des avantages est que l'utilisation de type de données signifie qu'il va aller dans le gestionnaire d'erreur si invalid json a été retourné, si un gestionnaire d'erreur a été spécifié.D'accord, mais comme il a été spécifiquement décodage json le résultat dans son exemple de code, j'ai supposé que ce n'était pas le cas.
OriginalL'auteur Ricky S
devis de votre question
vous devez envoyer une grande chaîne json au lieu de plusieurs petites. Vous ne serez pas en mesure de faire une boucle par la réponse car il n'est pas une seule chaîne json (il existe de multiples chaînes json).
aussi il est préférable de la chaîne de l'ajax rappels car en les utilisant comme des options seront supprimées à partir de jquery dans le futur.
http://api.jquery.com/jQuery.ajax/
"options seront supprimées à partir de jquery dans le futur." non, ils ne le feront pas. Que l'avis est pour le succès d'erreur et complètes méthode, pas d'options.
oui mais la question suggère qu'il y a plusieurs petites chaînes json envoyé au serveur.
préparez votre code pour leur éventuelle suppression de" voir api.jquery.com/jQuery.ajax
Il n'est pas supprimé. Re-lire la citation que vous avez placé dans votre réponse, ce n'est pas du référencement de l'
success:
error:
etcomplete:
options.OriginalL'auteur kasper Taeymans
Vous pouvez simplement retourner un gros résultat JSON. Parce que chacun de vos objets JSON peut être enveloppé dans une autre.
Le JSON vous retour serait alors un tableau d'objets (quels qu'ils soient)
Ensuite dans votre réussite fonction, vous pouvez effectuer une itération sur chaque objet et chaque mise à jour de la page:
OriginalL'auteur Alexander Mistakidis
de retour Car enveloppé réussite dans votre réussite fonction,vous pouvez effectuer une itération sur chaque objet et chaque mise à jour de la page, Vous pouvez simplement retourner un gros résultat JSON.Parce que chacun de vos objets JSON peut être enveloppé dans une autre. Le JSON vous retour serait alors un tableau d'objets (quels qu'ils soient)
OriginalL'auteur nanthan