jQuery analyser/affichage des données json en php json_encode
Initiale .appel ajax en jquery:
$.ajax({
type: 'post',
url: 'items_data.php',
data: "id="+id,
dataType: 'json',
success: function(data){
if(data){
make_item_rows(data);
}else{
alert("oops nothing happened :(");
}
}
});
Envoie une simple chaîne de caractères dans un fichier php qui ressemble à:
header('Content-type: application/json');
require_once('db.php');
if( isset($_POST['id'])){
$id = $_POST['id'];
}else{
echo "Danger Will Robinson Danger!";
}
$items_data = $pdo_db->query ("SELECT blah blah blah with $id...");
$result_array = $items_data->fetchAll();
echo json_encode($result_array);
Je suis en rattrapage de l' $result_array très bien et de le transmettre à une autre fonction. J'ai vérifié qu'il n'y a en effet de valeurs propres étant retourné comme je peux juste l'écho de suite sur ma page et il affiche quelque chose comme ce qui suit:
[{"item_id":"230","0":"230","other_id":"700"},{"item_id":"231","0":"231","other_id":"701"},{"item_id":"232","0":"232","other_id":"702"}]
J'ai de la difficulté à comprendre comment itérer les résultats afin que je puisse injecter des valeurs dans un tableau que j'ai dans mon code HTML. Voici ce que j'ai pour ma fonction:
function make_item_rows(result_array){
var string_buffer = "";
$.each(jQuery.parseJSON(result_array), function(index, value){
string_buffer += value.item_id; //adding many more eventually
$(string_buffer).appendTo('#items_container');
string_buffer = ""; //reset buffer after writing
});
}
J'ai aussi essayé de mettre une alerte sur le $.chaque fonction pour s'assurer qu'il était de tir 3 fois, qui c'était. Cependant pas de données vient de mon code. Ont essayé d'autres méthodes aussi bien avec pas de chance.
Mise à JOUR: j'ai modifié mon code pour inclure les parseJSON, pas de dés. A obtenu un jeton inattendu erreur dans mon fichier jquery (à droite lorsqu'il tente d'utiliser json native de l'analyseur). Essayé d'ajouter le json en-tête en vain, même erreur. la version jquery 1.9.1. Code comme il est maintenant devrait être reflété ci-dessus.
OriginalL'auteur carter | 2013-03-31
Vous devez vous connecter pour publier un commentaire.
Définir la
dataType:"JSON"
et de rappel dans votre appel ajax.Par exemple:
Veuillez également prendre en considération dans votre installation de PHP le contenu JSON-type.
header('Content-type: application/json');
Vous avez besoin de faire une chaîne json, "JSON" et d'ajouter une virgule après chaque paramètre. Sinon, cette réponse a travaillé pour moi aussi.
OriginalL'auteur alasarr
OriginalL'auteur writeToBhuwan
Vous devez l'analyser avec
jQuery.parseJSON
OriginalL'auteur kero
De l'essayer.
OriginalL'auteur Mohammad Adil
En supposant que vous avez déjà analysé la réponse json et vous avez le tableau. Je pense que le problème est que vous devez passer un rappel de $.chacun prend et l'index et un élément param
(Légèrement modifié) DÉMO
OriginalL'auteur Carlos
pour commencer à l'intérieur de la
$.each
vous avez besoin pour accéder aux propriétés de l'instance de l'objet contenu dansresult_array
, pasresult_array
lui-même.Pas entièrement sûr de ce que vous attendez de cette ligne:
$(string_buffer).appendTo('#items_container');
$(string_buffer)
ne crée pas valide d'un sélecteur jQuery, puisque rien dansstring_buffer
a un préfixe de classe, nom de balise ou de l'IDENTIFIANT, et les valeurs de json ne soitSi voulez simplement la chaîne de valeur de la
item_id
ajouté :Si vous recevez ce à l'aide de jQuery AJAX méthodes que vous n'avez pas besoin d'utiliser
$.parseJSON
comme d'autres réponses suggèrent, c'est déjà fait pour vous, en interne, à condition que vous êtes paramètre de type de données correct pour AJAXseulement si le sélecteur d'élément du DOM html ou chaîne dans
$()
est valide...qui, dans ce cas, il n'est pas et ne parviennent tout simplement pas tranquillementvraiment aider si vous le contour de l'objectif de votre code. Peut aider plus de cette façon. De code cassé est souvent pas une bonne substute pour une explication verbale des objectifs et des résultats attendus. Un exemple de tableau html serait également d'une grande aide.Si `$('#container') est un tableau, vous devez créer un code html valide la ligne à ajouter
ouais désolé j'ai coupé beaucoup de code pour essayer de le rendre plus simple. Je peux compléter tout le html et mise en forme une fois que je peux parcourir l'objet json/tableau/quel qu'il soit. J'ai mis à jour le code ci-dessus pour l'essayer et donner plus d'info. #items_container est juste une balise div à droite maintenant pour le test. Juste essayer d'obtenir les 3 item_id est de montrer en premier. Quand je viens de echo json_encode de la .fichier php sans rien faire avec les données, vous obtenez le [{},{},{}] indiqué ci-dessus. Merci pour l'aide 🙂
Charlie, je voulais juste dire merci. Vous avez eu raison et jQuery documentation a été mauvais sur ce coup. Il a fait faire une différence entre les deux .ajouter et .appendTo()
OriginalL'auteur charlietfl