Başka bir sunucuda java'da yazılmış bir web hizmetini sorgulamak için jsonp ve ajax kullanıyorum.jQuery, ajax ve jsonp ile sorun yaşama
$.ajax({
type: "GET",
url: wsUrl,
data: {},
dataType: "jsonp",
complete: sites_return,
crossDomain: true,
jsonpCallback: "sites_return"
});
function jsonp_callback(data) {
console.log(data);
}
function sites_return(data) {
console.log(data);
}
Bu kadar sorun sorgusu tamamlandıktan sonra jsonp_callback adında bir işlev denir: Ben şu jquery komut kullanıyorum. Açıkça json biçimlendirilmiş dize görebilirsiniz Nerede:
Object { readyState=4, status=200, statusText="parsererror"}
Ayrıca başvuru için jsonp_callback fonksiyonudur:
{"listEntries":["ELEM1", "ELEM2", "ELEM3", etc...]}
Ama işlev sites_return denir sonra
tam olayı harekete, şu olsun site_return işlevinden önce çağrıldı. Ayrıca jsonp_callback işlevini koddan çıkarırsam, işlev uygulanmadığı için bir şikayette bulunur.Sorum şu üç kat: 1) JQuery tarafında neyi yanlış yapıyorum? 2) Neden json jsonp_callback'de doğru şekilde ayrıştırılır, ancak site_return değil? 3) Bu sorunları gidermek için neler yapabilirim?
Bazı yeni gelişme DÜZENLEME. Buradaki yorumlara göre bazı ek bilgiler.
şu bu çağrıldığını nedeni jsonp_callback olduğunu varsayalım http yanıtı
jsonp_callback({"listEntries":["ELEM1", "ELEM2", "ELEM3"]})
çıkan şeydir. Sanırım şimdi sorum şu, bunu kontrol etmenin herhangi bir yolu var mı (arka uç web servisine erişimim olmadığı varsayımıyla).
Bence gerek mi sanıyorsun Tüm JSON'ları görün, çünkü bu ayrıştırma hatasına neden olan bir sorun var. – Pointy
Ayrıca, "jsonp_callback" işlevinin neden çağrıldığını net değil. – Pointy
Hepsi buradaki json. Asıl elemanları sahte isimlerle değiştirdim ama format tam olarak aynı (tabii ki vs.). HTTP üstbilgisinin yanıtında geri dönen şey aşağıdadır. jsonp_callback ({"listEntries": ["ELEM1", "ELEM2", "ELEM3"]}). Ona baktığımda, fonksiyonun çağrıldığını varsayıyorum çünkü bu, http başlığı içinde nasıl biçimlendirildiğidir. – sumone4life