2013-01-10 24 views
1

我真的很困惑。如果我在瀏覽器中發佈以下鏈接,它可以工作,沒問題,但是當我問jQuery對它做什麼時,它會回到空白處,但沒有錯誤。theyworkforyou API在Javascript中返回空Ajax

鏈接

http://www.theyworkforyou.com/api/getConstituency?key=FU8MWTEQnvVsHC6GM7B82zie&postcode=BS345NT

代碼

$.ajax({ 
    url: 'http://www.theyworkforyou.com/api/getConstituency?key=FU8MWTEQnvVsHC6GM7B82zie&postcode='+postcode+'&output=js', 
    type: 'POST', 
    success: function(response) { 
    console.log(response); 
    } 
}); 

我可以改變的關鍵,所以不用擔心我張貼的事實。

任何想法,爲什麼它不工作?

+0

dataType:「json」, –

+1

當我運行它時,出現錯誤:'XMLHttpRequest無法加載http://www.theyworkforyou.com/api/getConstituency?key=FU8MWTEQnvVsHC6GM7B82zie&postcode=RG2+9LA&output=js。起源http://jsbin.com不被Access-Control-Allow-Origin所允許.' – Quentin

+0

我找不到任何forforfor你的api文檔,但可能他們不打算讓你的API密鑰給你訪問者並要求他們的瀏覽器直接與API交互。 – Quentin

回答

2

您的JavaScript運行在從源服務器下載到瀏覽器中的網頁上下文中。它試圖從不同的服務器請求頁面,但這是對same origin policy的違反。 Javascript不能向除原始服務器以外的服務器發出請求。

JSONP技術可用於解決此問題,但前提是非源服務器支持該技術。在這種技術中,javascript代碼動態地創建一個腳本標記,其src元素指向非原始服務器,並且2)傳遞(作爲查詢參數)存在於本地javascript中的函數的名稱。非原始服務器返回僅調用由非原始服務器提供的數據的功能的腳本的源代碼。通過這種方式,JavaScript可以從非原始服務器請求數據。

如果非原始服務器不支持JSONP,那麼您將無法做到您想要的。

+0

謝謝你,Lyn做到了。 –