2013-08-16 11 views
10

olmadan JSON Yanıtı almak için. Ben çözüm JSONP olduğunu biliyorum ama servisin yanıtı metnin üzerinde hiçbir kontrole sahip ya da kendi geri arama işlevi onu sarmak için çünkü amacım nasılsa müşteri uç komut dosyalarını kullanarak yukarıdaki URL yanıtı almak için olduğunu.jQuery Çapraz Alan İsteği ben jQuery ile bu adresten</p> <pre><code>http://www.iheartquotes.com/api/v1/random?format=json </code></pre> <p>bir JSON almaya çalışıyorum Geri Arama

Ben StackOverflow'daki birkaç cevaplardan elde önerdi neredeyse tüm yöntemleri denedim. Bunlar, denediğim kod blokları ve aldığım yanıt.

1. Beklenen Access-Control-Allow-Origin hatayı

$.getJSON("http://www.iheartquotes.com/api/v1/random?format=json", 
    function(data) { 
    alert(data);   
    }); 

Yanıtı döndü direkt çağrı:

XMLHttpRequest cannot load =1376682146029">http://www.iheartquotes.com/api/v1/random?format=json&=1376682146029. Origin http://stackoverflow.com is not allowed by Access-Control-Allow-Origin.

2. Geri arama parametresi ile yukarıdaki kod eklendi:

$.getJSON("http://www.iheartquotes.com/api/v1/random?format=json&callback=?", 
    function(data) { 
    alert(data);   
    }); 

Yanıtı:

Uncaught SyntaxError: Unexpected token :

ben hata tıkladığımda, o beklenen JSON yanıta beni alır unutmayın.

{"json_class":"Fortune","tags":["simpsons_homer"],"quote":"Holy Moly! The bastard's rich!\n\n\t\t-- Homer Simpson\n\t\t Oh Brother, Where Art Thou?","link":"http://iheartquotes.com/fortune/show/5501","source":"simpsons_homer"} 

Yanıtda tanımlanan geri arama işlevi olmadığından, bu ayrıca bekleniyor.

3.

$.ajax({ 
    type: "GET", 
    dataType: "jsonp", 
    url: "http://www.iheartquotes.com/api/v1/random?format=json", 
    success: function(data){   
    alert(data); 
    }, 
}); 

Tepki jQuery'nin Ajax yöntemi aracılığıyla:

Uncaught SyntaxError: Unexpected token :

yanıtı değişmez yukarıdaki fonksiyona geri arama parametresi ekleme. Uzmanlardan

Herhangi bir yardım veya işaretçiler URL'den JSON almak için? Bunu Chrome Dev Tools'tan test ediyorum. Sunucuyu sunucu kodundan arayabilir ve daha sonra istemci tarafına gönderebilirim. Ancak bunun, istemci tarafında jQuery ile yapılıp yapılamayacağını görmek istiyorum.

EDIT: Kevin B'ye bağlı olarak yorum: YQ üzerinden beklenen çıktıyı jQuery's Ajax kullanarak aldınız. Ama benim sorum aynı kalıyor. YQL hala bir bağımlılık olarak jQuery üzerinden yapmak için yerel bir yolu var mı? Bu, beklenen yanıtı verir. ( ). Bu, beklenen yanıtı verir.

+2

mümkün değildir. Not, * sunucunuz, google YQL olmak zorunda değildir. –

+1

Veya makaleye bakın: http: //learn.jquery.com/ajax/working-with-jsonp/ –

+0

Hey @KevinB, YQL işaretçisi için teşekkürler. Önerileriniz bir şekilde işe yaradı. Yeni kodu da dahil etmek için sorumu düzenledim. –

cevap

1

Bu tüm tarayıcılarda çalışmaz, ama JQuery hangi sürümünü bağlı denemen kullandığınız:

$.support.cors = true; 

Açıkçası bu da sunucu yanıt başlıklarını bağlıdır. Sunucu tarafı müdahalesi olmadan

İlgili konular