如何读取setRequestHeader上的错误?

时间:2015-12-10 16:26:57

标签: javascript jquery

我使用xhr.setRequestHeader在jQuery中使用beforeSend设置身份验证。代码是这样的:

beforeSend: function (xhr) {
    xhr.setRequestHeader('Authorization', 'Basic ' + btoa(app.username + ':' + app.password));
}

这里没有什么花哨的东西,但是让我们说提供的密码不正确,那么我的身份验证失败了......如何抓住错误呢?

似乎beforeSendxhr.setRequestHeader没有回调函数,任何人都有解决方案或者写了一些东西来做这件事?

编辑:

这是代码的其余部分

success: function(rows) {
    // everything is fine here when I provide correct username/password
},
error: function(responseData, textStatus, errorThrown) {
    console.warn(responseData);
    console.warn(textStatus);
    console.warn(errorThrown);
    // nothing shows up in the console when I provide a bad username/password
}

编辑2:

所以,事情是XHR永远不会失败,因为没有控制服务器端!身份验证成功与否,呼叫已成功,并返回readyState 4和status 200.如果没有显示错误,则说明我无法显示的原因!

1 个答案:

答案 0 :(得分:2)

首先,xhr.setRequestHeader()只是为请求添加了一些标头。它实际上并没有发送它,因此在您的其他XHR代码实际发送请求之前,密码将不会被验证。因此,在设置标题时不会出现故障。

如果密码错误,则XHR响应/状态是将错误传回给您的位置。 XHR调用将失败并且(取决于服务器端实现),您将获得指示错误的状态代码或指示错误的特定响应。

您可以使用onreadystatechange事件处理程序查看响应。

如果您需要进一步的帮助,请添加其余代码,以便发送和处理此问题的ajax调用,以便我们更具体地提供建议。