错误回调没有任何错误

时间:2013-10-31 14:31:45

标签: jquery ajax

我正在我的JS中执行以下操作。

var url = ...;
$.ajax({
  url: url,
  error: function(p1, p2) { alert(p2); }
});

我收到文本错误但是当我检查FF的控制台时,它会列出对指定为 200 OK 的地址的调用。看来我会收到错误,因为成功不会被调用。

  1. 怎么可能?
  2. 我在哪里可以查看错误消息(我看 state()拒绝)?

1 个答案:

答案 0 :(得分:1)

这是跨域请求失败的结果。

在网络级别,请求成功(这就是Firefox向您显示200 OK响应的原因),但相同的源策略(SOP)会触发错误并阻止JavaScript读取响应。

如果您想让请求成功,请:

  • 让请求的服务器为您的请求来源提供相应的Access-Control-Allow-Origin标头。 (仅当您控制目标服务器时才可以这样做。)

  • 使用JSONP:让服务器以脚本格式向您发送数据,并让您的客户端在<script>标记中运行它。 (同样,目标服务器必须支持此功能。)

  • 设置您自己的服务器以代理HTTP请求并将响应转发给您的脚本:

    Client Ajax ==> Your server (allowed by SOP) ==> Target resource
    

    请注意,这不会转发Cookie,因此如果traget资源需要身份验证,则该身份验证将失败。

相关问题