我正在我的JS中执行以下操作。
var url = ...;
$.ajax({
url: url,
error: function(p1, p2) { alert(p2); }
});
我收到文本错误但是当我检查FF的控制台时,它会列出对指定为 200 OK 的地址的调用。看来我做会收到错误,因为成功不会被调用。
答案 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资源需要身份验证,则该身份验证将失败。