2010-10-19 12 views
6

Bir jQuery $.getJSON() isteğindeki ham JSON yanıtına nasıl ulaşabilirim?

Sadece ham yanıtı tarayıcımda alert() iletişim kutusunda yazdırmak istiyorum?

+0

Çiğ JSON görmek için kundakçı gibi bir şey kullanmalıdır. Bir şeyi uyarmaktan çok daha kullanışlı. – JAL

+0

@alex evet Biliyorum. Ancak bu, gizli bir metin kutusunun öncüsüdür, böylece belirli kullanıcılar onu gösterebilir ve yanıtı bir e-postaya kopyalayabilir/yapıştırabilir. Uzun Hikaye. – Kev

cevap

3

JSONP kullanıyorsanız, bu temelde imkansızdır.

Etki alanınıza normal bir istek gönderiyorsanız, getJSON'u get ile değiştirin.

+0

JSONP kullanmıyorum. Önerinizi denedim ve sadece [object Object] 'görüntülendim. – Kev

+2

@Kev: 'dataType: 'text' öğesini eklemeyi deneyin. – SLaks

+0

"Farting hakkında" bir miktar sonra, bu işe yarıyor. Daha sonra dizeyi bir nesneye ayrıştırmak için fazladan bir adım değil, daha sonra '$ .dump()' veya 'JSON.stringify() 'diğer yoldan ekstra bir adımdır. – Kev

0

http://api.jquery.com/jQuery.getJSON/

Ben soyutlamaların çeşitli imzaları hatırlamak zorunda kalmamak için tam .ajax yöntemleri kullanmayı tercih eder.

dokümanlar bu getJSON eşdeğerdir söyleyin:

$.ajax({ 
    url: url, 
    dataType: 'json', 
    data: data, 
    success: callback 
}); 

alabilsem burada:

function callback(data) { 
    alert(data); 
} 

şiddetle (console.log Firefox ve Firebug kullanmanızı öneririz); bu tür şeyler için. Uyarılar bir süre sonra seni deli ediyor. diğer yanıtların dayanarak

, ben sorunuzu yanlış anlama olabilir

Düzenleme! Ham cevabı görmek için her zaman Fiddler'ı kullanabilirsiniz.

+0

Yazdırmak istediğim telin karşısına çıkan ham json dizesi. Bir dizi değeri kontrol etmek için hızlı bir hacky debug şey yapabilirdim. Ama hepinize teşekkürler. – Kev

+0

Firebug, o zaman gitmenin yolu. Sadece geri dönen tüm nesneyi görmek için geri arama işlevine (data) {console.log (data); – ScottE

+0

'console.log()', verileri hala bir nesneye benziyor, aslında peşinde olduğum gibi değil. Ham JSON'u (kaşlı ayraçlar, köşeli ayraçlar, alan adları, siğiller ve hepsi) göremiyorum. Fiddler işe yarıyor ama bunu eninde sonunda 'gizli' bir metin kutusuna yerleştirmek istedim. – Kev

0

https://github.com/douglascrockford/JSON-js/blob/master/json2.js'da JSON.stringify() özelliğini kullanarak bitti.

Bu, başka bir javascript dosyası yüklendiği için ideal değil, ancak amaca hizmet ediyor.

+0

Bunun, aldığınız gerçek JSON'u mutlaka iade etmeyeceğini unutmayın. (Biçimlendirme farklı olabilir) – SLaks

+0

@slaks - evet ama anlık olarak bir amaca hizmet etti. – Kev

13

jQuery 1.5 sürümünden jqXHR nesnesi, geri çağrı yönteminin üçüncü bağımsız değişkeni olarak iletilir. JqXHR nesnesinde ham JSON dizesini içeren bir reponseText özelliği vardır.

function callback(data, status, jqXHR) { 
    alert(jqXHR.responseText); 
    // or console.log(jqXHR.responseText); 
} 
+1

Evet, bu hatalarla uğraşırken çok kullanışlıdır: '.fail (işlev (jqxhr, textStatus, hata) { console.error (" Yanıt: "+ jqxhr.responseText); });' –

0

o ayrıştırıldı JSON ya da 'getJSON' yöntemi ayrıştırmak için çalıştı ama başarısız oldu tarayıcısı/sunucu tarafından üretilen hata olsun farklı bir dizi seçenek fiili yanıt almak için vardır.

Not: '.always' yöntemiyle parametreler başarısızlığa veya başarıya bağlı olarak değişir.

$.getJSON(getData.php, function(data,textStatus,jqXHR) { 
    console.log(jqXHR.responseText); 

//As of 1.5 we have these methods: 
}).always(
    function(jqXHR, textStatus, errorThrown) { //on failure 
     console.log(jqXHR.responseText); 
}).always(
    function(data, textStatus, jqXHR) { //on success 
     console.log(jqXHR.responseText); 
}).fail(
    function(jqXHR, textStatus, errorThrown) { 
     console.log(jqXHR.responseText); 

//As of 1.8 we have this method also: 
}).then(
    function(data, textStatus, jqXHR) { 
     console.log(jqXHR.responseText);}, 
    function(jqXHR, textStatus, errorThrown) { 
     console.log(jqXHR.responseText); 
}); 

daha bilgi ziyareti isterseniz:
http://api.jquery.com/jQuery.ajax/#jqXHR veya
http://api.jquery.com/category/deferred-object/