XMLHttpRequest不能用jQuery加载URL

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (50)

我正在尝试从一个“远程”网站获取一些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"}]

你知道我为什么会犯这个错误吗?

提问于
用户回答回答于

您不能执行XMLHttpRequest跨域操作,唯一的“选项”是一种名为JSONP的技术,具体如下:

要启动请求:添加一个新的<script>使用远程url标记,然后确保Remote url返回一个有效的javascript文件,该文件调用回调函数。有些服务支持这一点。

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

用户回答回答于

在新的jQuery 1.5中,你可以使用:

$.ajax({
    type: "GET",
    url: "http://localhost:99000/Services.svc/ReturnPersons",
    dataType: "jsonp",
    success: readData(data),
    error: function (xhr, ajaxOptions, thrownError) {
      alert(xhr.status);
      alert(thrownError);
    }
})

扫码关注云+社区

领取腾讯云代金券