来自跨域jQuery.ajax请求的错误,但适用于旧版本

时间:2011-12-19 18:54:45

标签: jquery ajax

我有这段代码:

$.ajax({
    url: "http://example.com/auth",
    type: "POST",
    data: "username=example&password=mypasswd",
    success: function(returned) {
        // do stuff
    },
    error: function(returned) {
        console.log(returned);
    }
});

它与jQuery 1.3.2很好用,我刚才写了它,但是在今天更新到1.7.1之后,它返回了这个:

Object { readyState=0, status=0, statusText="error"}

我无法让它发挥作用。我做错了什么?

2 个答案:

答案 0 :(得分:0)

我在代码中没有看到你告诉jQuery AJAX函数它正在进行跨域调用。尝试添加dataType : 'jsonp'作为$.ajax()电话中的一个选项:

$.ajax({
    url      : "http://example.com/auth",
    dataType : 'jsonp',
    type     : "POST",
    data     : "username=example&password=mypasswd",
    success  : function(returned) {
        // do stuff
    },
    error    : function(returned) {
        console.log(returned);
    }
});
  

使用JSONP加载JSON块。添加额外的“?callback =?”到了   您的网址末尾指定回调。通过附加禁用缓存   除非缓存,否则查询字符串参数“_ = [TIMESTAMP]”到URL   选项设置为true。

来源:http://api.jquery.com/jquery.ajax/

答案 1 :(得分:0)

这是因为跨源政策。您需要将服务器配置为接受之前的选项调用。

更多细节可在以下网址找到: https://en.wikipedia.org/wiki/Cross-origin_resource_sharing