2011-11-24 74 views
2

我開發一個網站,從外部URL使用JSON,我試過,但我得到了一個錯誤使用JSON使用jQuery

XMLHttpRequest cannot load http://reuniyo.com/tst/json.php. Origin null is not allowed by Access-Control-Allow-Origin

下面是我使用的代碼。

var url="http://reuniyo.com/tst/json.php"; 
jQuery.support.cors = true; 
$("#success").load(url, function(response, status, xhr) { 
    if (status == "error") { 
    var msg = "Sorry but there was an error: "; 
    $("#error").html(msg + xhr.status + " " + xhr.statusText); 
    } 
}); 

請幫幫我。提前

+1

看到這個鏈接 - > http://en.wikipedia.org/wiki/Same_origin_policy這將解釋你的問題 – ManseUK

+0

**謝謝先生** –

回答

6

假設遠程URL不在同一個域中,你正在開發的網站謝謝,uou需要:

  1. 使用JSONP如果遠程API支持它(我的測試表明事實並非如此)

  2. 在遠程站點添加Access-Control-Allow-Origin: *他們的響應頭

如果沒有的這些都是可能的,你運氣不好 - 這些規則在那裏,以防止跨源腳本攻擊。

+1

我使用'jQuery.support.cors = true; '在JavaScript中,但其工作只在IE8 :( –

0

添加此行ATT的json.php

header('Access-Control-Allow-Origin: *'); 
+1

我讓它''jQuery.support.cors = true;''$ .getJSON(「http://reuniyo.com/tst/json.php」,function( DATAS){'' $。每個(datas.Data,功能(I,數據){'' 含量= '

' + Data.CurrentDistance + '

';' '$(內容).appendTo(」 #product_list「);' '});});' 但它唯一的工作在IE8中,是否有其他的解決方案? –

0

頂部不要試圖開發從本地文件系統直接,它創造各種權限問題。將您的開發網站移至http服務器(如果您願意,可以在本地安裝一個)。

您還需要確保您訪問網站的主機名具有來自reuniyo.com的權限(使用上述Access-Control-Allow-Origin HTTP標頭)向其發出Ajax請求。

+0

I _think_ h e建議遠程API是第三方站點,不同於託管HTTP內容的站點。 – Alnitak

+0

**謝謝先生** –