首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨域JSON请求?

跨域JSON请求?
EN

Stack Overflow用户
提问于 2010-01-13 15:50:36
回答 2查看 26.1K关注 0票数 14

问题:

我正在尝试使用JSON跨域访问,但我找到的都是JSON解析器,而我并不需要……

我读到可以使用JSON进行跨域请求,但到目前为止,我所看到的都是使用XMLHttpRequest的实现……

  • ,这意味着你不能使用跨域请求,至少不能在IE8之外使用。

我一直在用http://www.json.org/,但我找到的要么是解析器,要么是无用的。

到目前为止,我发现的最好的google是

http://devpro.it/JSON/files/JSONRequest-js.html

但这相当混乱,不能跨域工作,也不能在域内工作--或者更确切地说,根本不能工作……

代码语言:javascript
运行
复制
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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-13 15:58:23

你可以做的跨域是注入一个脚本,包括:

代码语言:javascript
运行
复制
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);

现在,该请求返回的代码将立即执行。如果你想让它与你的代码交互,你可以确保它与所有封装在函数调用中的数据一起返回:

代码语言:javascript
运行
复制
jsonCallback({ object: json, whatever: value });

您可以使用它来构建API,在API中将回调函数的名称作为请求querystring参数进行传递。Here's an example of such an API

票数 14
EN

Stack Overflow用户

发布于 2010-01-13 16:22:35

JSON只是一个序列化方法。序列化的方法与浏览器是否会试图阻止您跨域访问数据的问题没有任何关系。(这就解释了为什么只查找解析器-除了编码和解码之外,JSON没有其他东西)。

XMLHTTPRequest被命名为XML HTTPRequest。它实际上与XML没有任何关系。它可用于发送文本数据、以JSON编码的数据或任何其他序列化方法。

有几种方法可以跨域访问数据。在David Hedlund的回答中描述的一个。其他的可以在类似问题的答案中找到(参见herehere)。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2055186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档