2011-03-08 99 views
0

我已上載該數據Rackspace的雲文件:爲什麼這個.json文件沒有被jquery解析?

{"foo": "bar"} 

它生活在這個網址:http://c192531.r31.cf1.rackcdn.com/test.json

它充當內容類型的應用程序/ JSON和當使用瀏覽器訪問你得到一個Promt下載。該文件具有預期的內容。

當我試圖在這個片段中

<script> 
$(document).ready(function($) { 

    url = 'http://c192531.r31.cf1.rackcdn.com/test.json'; 
    $.getJSON(url, function (data) { 
     alert(data); 
    }); 

}); 
</script> 

它提醒null使用jQuery 1.4.2訪問它。

我做錯了什麼?

回答

5

包含此腳本的頁面是否託管在同一個域中(http://c192531.r31.cf1.rackcdn.com)?如果沒有,您可能會點擊same origin policy restriction,這會阻止您發送跨域AJAX請求。

可能的解決方法是使用JSONP,但是您需要使遠程URL返回JSONP字符串,或者如果您不能修改它,請設置可充當域和遠程域之間橋樑的服務器端腳本,以及然後將AJAX請求發送到該橋接腳本。

1

您正遇到Same Origin Policy。您可以直接下載JSON,因爲您不想從另一個網站的上下文中嘗試這樣做(即,您只是直接訪問該URL)。但是從ajax請求中,您有http://site.a嘗試從http://site.b加載數據。

1

這是由於安全重建造成的。解決這個問題的方法是使用jsonp而不僅僅是json。

在jQuery中,您可以通過將內容類型設置爲jsonp來利用jsonp。但你確實需要改變你的json文件。

1

您無法請求與頁面不在同一個域中的JSON文件。這被稱爲same origin policy。但您可以使用JSONP

相關問題