jQuery帖子用readyState响应:0,状态:0

时间:2011-07-25 15:58:55

标签: jquery ajax http-post

所有。我使用的是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的POST网址,这没关系。此外,我可以看到通过firebugs回应.... 但问题是......为什么jquery让我有错误......: 这是错误消息:

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

你忘了告诉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"); });

答案 3 :(得分:0)

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