/ / JSON dans JQuery - jquery, ajax, json

Analyse JSON dans JQuery - jquery, ajax, json

J'ai une donnée JSON qui ressemble à ceci:

{"product":["{productTitle=ABCD , productImage=/abcd.jpg, productPath=CDEF.html, productPrice=$299}","{productTitle=EFGH, productImage=xxxx.jpg, productPath=ggfft.html, productPrice=$299}"]}

J'essaie de traiter les données et de les utiliser sur ma page JSP.

Voici la fonction que j'utilise pour analyser chaque nœud de la réponse.

success : function(data) {
alert("successs");
alert("data.product" + data.product);
$.each(data.product, function(index) {
alert(data.product[index].productTitle);


});

},

Ici alert("data.product" + data.product); me donne l'alerte avec l'ensemble du JSON qui se trouve sous le nœud du produit.

alert(data.product[index].productTitle); - Cette alerte indique "indéfini".

J'ai besoin d'aide pour analyser le JSON et imprimer chacun des "productTitle"

Merci d'avance .

Réponses:

2 pour la réponse № 1

data.product est un tableau de chaînes, pas d’objets ni de JSON, vous devrez analyser les chaînes pour obtenir les données.

vous pouvez utiliser regex pour transformer la chaîne en JSON puis JSON.parse ou $ .parseJSON pour la convertir en objets js mais son un peu brouillon, voir http://jsfiddle.net/nQE6J

$.each(data.product, function(index) {
alert(JSON.parse(data.product[index].replace(/=/g, ":").replace(/([a-z.A-Z$/d]+)/g, ""$1"")).productTitle);
});

0 pour la réponse № 2

Le JSON que vous donnez est

{
"product":[
"{productTitle=ABCD , productImage=/abcd.jpg, productPath=CDEF.html, productPrice=$299}",
"{productTitle=EFGH, productImage=xxxx.jpg, productPath=ggfft.html, productPrice=$299}"
]
}

Cependant, vous devez changer ci-dessus en

{
"product":[
{"productTitle":"ABCD"  ,
"productImage":"/abcd.jpg",
"productPath":"CDEF.html", "productPrice":"$299"},
....
]
}

Alors
data.product[0].productTitle est "ABCD"


0 pour la réponse № 3

essaye ça

   var jdata = JSON.parse(data);
$.each(jdata.product, function(index, productdetail) {
alert(productdetail.productTitle);
});

0 pour la réponse № 4

Ajouter

contentType : "application/json"

à votre demande (et dans l’en-tête de réponse, ce qui devrait être fait automatiquement par votre serveur Web). jQuery interprète ensuite automatiquement le Repsonse en tant qu’objet JSON et l’analyse.


0 pour la réponse № 5
JSON.parse(data)

devrait faire le tour.

Edit: Je vois que ce n'est même pas JSON à l'intérieur de la chaîne. Utilisez la réponse de Musa pour le transformer en JSON, puis utilisez JSON.parse(data) comme je l'ai suggéré initialement.