jQuerypost用readyState响应:0,状态:0

所有。 我使用的是jquery版本1.6.2。 我做这样的ajax调用:

var jqxhr = $j.post(myPHP, function() { alert("success"); }) .success(function() { alert("second success"); }) .error(function(data) { alert(JSON.stringify(data)); }) .complete(function() { alert("complete"); }); 

脚本,运行和显示错误,比完成。 有些人可能会… myPHP有问题,但myPHP总是显示:

 {"sayHi":"hihi"} 

所以,当我打电话时,我去找萤火虫检查链接是否有任何问题..:它显示状态为200的POSTurl,这没关系。 此外,我可以通过firebugs看到响应….但问题是….为什么jquery所以我有一个错误…:这里是错误消息:

 {"readyState":0,"responseText":"","status":0,"statusText":"error"} 

对我来说,这个问题是由跨域问题引起的。 所以我有一个本地的html文件( c:\test.html )并试图从服务器(localhost / servlet)获取数据。 将html放在服务器上时 – 问题就消失了。

如果浏览器在XHR请求仍在进行时切换网页(用户点击了链接,后退按钮,……),则此XHR请求将被取消并确切地说明您的错误。

请查看以下博客文章,深入解释该问题: http : //bartwullems.blogspot.de/2012/02/ajax-request-returns-status-0.html

你忘了告诉jQuery服务器正在返回JSON:

  var jqxhr = $j.post(myPHP, function() { alert("success"); }, "json") // here .success(function() { alert("second success"); }) .error(function(data) { alert(JSON.stringify(data)); }) .complete(function() { alert("complete"); }); 

在我的情况下,它不是由于跨域。 我没有使用e.PreventDefault()。 看到这里