如何在Ajax请求中访问响应代码?

时间:2017-11-16 15:59:19

标签: ajax

正如我在标题中提到的,如何在Ajax请求的完成回调中访问响应的状态代码?

var isUsernameGood = new Promise(
        function(resolve, reject) {
            console.log("Starting username check");
            $.ajax({
                       type: "POST",
                       url: '/username',
                       contentType:'application/json',
                       data: JSON.stringify({username: document.getElementById("username").value})
            })
            .done(function(data, textStatus, xhr){
                console.log("done");
                console.log(data); console.log(textStatus); console.log (xhr);
                resolve(xhr.status);
            })
            .fail(function(data, textStatus, xhr){
                console.log("fail");
                console.log(data); console.log(textStatus); console.log (xhr);
                reject(xhr.status);
            });
        }
    );

编辑:日志打印“失败”,然后“Object { readyState: 4, getResponseHeader: getResponseHeader(), getAllResponseHeaders: getAllResponseHeaders(), setRequestHeader: setRequestHeader(), overrideMimeType: overrideMimeType(), statusCode: statusCode(), abort: abort(), state: state(), always: always(), catch: catch(), … }”,然后在浏览器的检查功能的网络选项卡中显示“错误”和“未知”我看到请求以及响应它的状态代码。

我注意到在对应于在失败回调中打印“数据”的对象中存在以下字段:

enter image description here

即。奇怪的是,状态代码位于“state”字段内,而不是statusCode 1。我是否必须从“州”访问它?

1 个答案:

答案 0 :(得分:-1)

有几种方法可以从ajax调用访问响应,例如参见: Get Http Status Code from an ajax response with jquery 希望这有帮助!