簡體   English   中英

跨域JSON請求?

[英]Cross-domain JSON request?

題:

我正在嘗試使用JSON跨域,但我找到的只是JSON解析器,我不需要...
我已經讀過用JSON做跨域請求是可能的,但到目前為止,我看到的只是使用XMLHttpRequest的實現......
- 這意味着你不能使用跨域請求,至少不能在IE 8之外...
我一直在http://www.json.org/ ,但我找到的只是解析器或無用。

到目前為止,谷歌發現的最好的是
http://devpro.it/JSON/files/JSONRequest-js.html
但這相當混亂,不能跨域工作,域內也不工作 - 或者根本不工作......

var the_object = {}; 
var http_request = new XMLHttpRequest();
http_request.open( "GET", url, true );
http_request.onreadystatechange = function () {
    if ( http_request.readyState == 4 && http_request.status == 200 ) {
            the_object = JSON.parse( http_request.responseText );
        }
};
http_request.send(null);

你可以做的跨域注入腳本包括:

var s = document.createElement('script');
s.src = 'http://someotherdomain/getMeMyJs.aspx?parameter=value';
s.onload = someOptionalCallback;
s.type = 'text/javascript';

if(document.getElementsByTagName('head').length > 0)
    document.getElementsByTagName('head')[0].appendChild(s);

現在,該請求返回的代碼將立即執行。 如果您希望與代碼進行交互,則可以確保返回包含在函數調用中的所有數據:

jsonCallback({ object: json, whatever: value });

您可以使用它來構建API,您可以將回調函數的名稱作為請求查詢字符串參數傳遞。 這是一個這樣的API的例子

JSON只是一種序列化方法。 序列化方法與瀏覽器是否會試圖阻止您跨域訪問數據之間沒有任何關系。 (這解釋了為什么你只找到解析器 - JSON沒有任何東西,除了編碼和解碼它)。

XMLHTTPRequest名為XML HTTPRequest。 它與XML沒有任何關系。 它可用於發送文本數據,以JSON編碼的數據或任何其他序列化方法。

有幾種方法可以訪問數據跨域。 在David Hedlund的回答中描述了一個。 其他人可以找到類似問題的答案(見這里這里 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM