Bunun çok basit bir soru olduğunu düşünüyorum, ancak şanssız bir cevap aramak için saatler harcadım, aşağıdaki json nesnesini kullanıyorum (oyun kullanarak oluşturuldu! Çerçeve)jquery kullanarak bir json nesnesini nasıl ayrıştırılır
{
"preg.pregunta": [{
"message":"Debes escribir una pregunta",
"key":"preg.pregunta",
"variables":[]
}],
"preg":[{
"message": "validation.object",
"key":"preg",
"variables":[]
}]
}
Bu kodun benim jquery parçasıdır
Ben tüm içpreg.pregunta
(
message
ve
key
değerler) almak istiyorum
$.ajax({
type: $target.attr('method'),
data: dataString,
url:$target.attr('action'),
dataType: "json",
beforeSend: function() {
//some stuff
},
success:function(response){
//some stuff
},
error: function(response){
//I want to use the json response here.
}
});
210 Herhangi bir yardım?
GÜNCELLEME: Kendime cevap vermek için yeterli bir itibarım yok, bu şimdiye kadar bulduğum şey.
Tamam belki de daha açık olurdu ya da biraz daha fazla çalışmam gerekiyor; JQuery bir HTTP hatası (400 bu durumda) ile birlikte geldi eğer bir JSON yanıtı düzgün ayrıştırmak değil buldum.
Birisi neden bu davranışı biliyor?
Bu kodu success
işleyicisinde test ettim ve mükemmel çalışıyor!
$.ajax({
type: $target.attr('method'),
data: dataString,
url:$target.attr('action'),
dataType: "json",
beforeSend: function() {
},
success:function(response){
//It is working perfectly!
$.each(response,function(object){ //first loop of the object
$.each(response[object],function(values){ //looping inside arrays
console.log(response[object][values].key) //getting value "key"
console.log(response[object][values].message) //getting value "message"
});
})
},
error: function(response){
//nothing happens here
}
});
yaklaşık 2 saat arama sonra
2. GÜNCEL, bir basit çözüm bulduk:
error: function(response){
//Note the jQuery.parseJSON function
var response = jQuery.parseJSON(response.responseText);
$.each(response,function(object){
$.each(response[object],function(values){
console.log(response[object][values].key)
console.log(response[object][values].message)
});
})
}
Açıklama: hata işleyicisi kullanıldığında jQuery hatasını açıklayan bir kompleks nesnesi geri gönderir , responseText sunucudan alınan verileri içerir, bu nedenle parseJSON işlevini kullanarak ayrıştırmanız gerekir.
Bu yardımcı olur umarız!
Merhaba! Başarısız ile daha önce denedim, "response ['preg.pregunta'] undefined" –
Aşağıdakileri denediğinizde konsolda ne görüyorsunuz: 'console.log (response);'? –
Merhaba Rory, cevabım gayet basit; Playframework validators kullanarak bir alanı doğrularıyorum, Herhangi bir hata bulunursa (örneğin bir alan boş) oynatma, daha sonra kullanabilmem için JSON olarak oluşturulan bir validation.errorsMap() nesnesini döndürür, bu yanıt bir 'HTTP ile döner. 400' ... yani bu yüzden 'error' işleyicisi ile yakaladım. –