jQuery post fail callback不显示代码400的响应

Gac*_*cek 11 ajax jquery post httpresponse

我有一个以下的jQuery帖子请求:

$.post("ajax.php", data).done(
    function(response){
        // do something when response is ok
     }
   ).fail(
    function(response){
          $("#error").html(response);
     }
 );
Run Code Online (Sandbox Code Playgroud)

在我的ajax.php文件出现问题时,我返回HTTP响应代码400,并带有一条消息:

header("HTTP/1.0 400 Error");
echo "Some error message";
exit();
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中检查错误调用的响应时,我可以看到状态代码Status Code:400 Bad Request和我在错误消息中传递的响应文本.但是jQuery的.fail回调并没有显示我的response.

如何访问失败/错误响应文本?

编辑

我测试了我的代码,并且.fail正在触发回调,我只是无法显示响应消息.

KAD*_*KAD 15

你需要使用jqXHR:

自jQuery 1.5起,$ .ajax()返回的jQuery XMLHttpRequest(jqXHR)对象是浏览器的本机XMLHttpRequest对象的超集.例如,它包含responseText和responseXML属性,以及getResponseHeader()方法.当传输机制不是XMLHttpRequest(例如,JSONP请求的脚本标记)时,jqXHR对象尽可能模拟本机XHR功能.

.fail 是jqXHR对象的可用Promise方法之一,

jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});

您可以使用该responseText属性来获取错误消息:

$.post("ajax.php", data).done(
    function(response){
        // do something when response is ok
     }
   ).fail(
    function(jqXHR, textStatus, errorThrown) {
          $("#error").html(jqXHR.responseText);
     }
 );
Run Code Online (Sandbox Code Playgroud)

参考:http://api.jquery.com/jquery.ajax/#jqXHR

  • 对不起,我的浏览器保留了旧版本的js文件.它经过努力刷新后起作用.抱歉打扰. (2认同)