jQuery post以readyState:0响应,状态:0

jQuery post以readyState:0响应,状态:0,jquery,ajax,http-post,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)); }) .co

全部。我使用的是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"}
因此,当我打电话给..时,我去Firebug查看链接是否有任何问题: 它显示状态为200的帖子url,这是正常的。另外,我可以通过Firebug看到响应。。。。 但问题是…为什么jquery会让我出错…: 下面是错误消息:

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

您忘记告诉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"); });

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

在我的例子中,这不是因为跨域。我没有使用e.PreventDefault()。请参见

如果浏览器在XHR请求仍在进行时切换网页(用户单击了链接、后退按钮等),则此XHR请求将被取消,并显示您的错误


请看下面的博文,其中对问题进行了深入解释:

仍然错误,顺便说一句,如果返回的是纯文本,我是否需要提及?您是否在服务器上执行
json\u encode()
?不,你不需要提到“文本”。解决了,我知道会发生:跨域ajax调用。。。。相关:它是关于跨站点脚本的: