小编典典

XMLHttpRequest无法使用jQuery加载URL

json

我正在尝试从“远程”网站获取一些json数据。我在99000端口上运行Web服务,然后在99001端口上启动网站(http://
localhost:99001 / index.html)。

我收到以下消息:

    XMLHttpRequest cannot load http://localhost:99000/Services.svc/ReturnPersons. Origin http://localhost:99001 is not allowed by Access-Control-Allow-Origin.

即使以HTML文件启动网页,我也会得到以下信息:

    XMLHttpRequest cannot load http://localhost:99000/Services.svc/ReturnPersons.Origin null is not allowed by Access-Control-Allow-Origin.

Web服务返回数据。我尝试捕获这样的数据项:

var url = "http://localhost:99000/Services.svc/ReturnPersons";
$.getJSON(url, function (data) {
success: readData(data)
});
function readData(data) {
    alert(data[0].FirstName);
}

我正在尝试获得以下结构:

[{"FirstName":"Foo","LastName":"Bar"},{"Hello":"Foo","LastName":"World"}]

您知道我为什么会收到此错误吗?


阅读 302

收藏
2020-07-27

共1个答案

小编典典

您无法执行XMLHttpRequest跨域,唯一的“选项”将是称为JSONP的技术,其含义如下:

要开始请求,请执行以下操作:<script>使用远程URL
添加一个新标记,然后确保该远程URL返回一个有效的JavaScript文件,该文件会调用您的回调函数。某些服务支持此功能(并让您在GET参数中命名回调)。

另一种简单的方法是在本地服务器上创建一个“代理”,该代理将获取远程请求,然后将其“转发”回您的javascript。

编辑/添加:

通过检查URL是否包含“ callback
=?”,我看到jQuery具有对JSONP的内置支持。(其中jQuery将用实际的回调方法替换?)。但是您仍然需要在远程服务器上进行处理以生成有效的响应。

2020-07-27