【发布时间】:2012-12-29 13:28:38
【问题描述】:
我正在使用jQuery.ajax 调用通过javascript 调用api。如果用户未通过身份验证,api 会以 401 响应,我只想在此调用中忽略此错误。
我已经尝试了 jQuery 选项中描述的所有回调选项,但错误仍然会在浏览器控制台中弹出(在 Firefox 和 Chrome 中)。
这是一个触发错误的示例代码:
$.ajax({
type: 'GET',
url: '/url-with-auth',
dataType: 'json',
statusCode: {
401: function (error) {
// simply ignore this error
console.log(error);
}
},
complete: logall,
error: function () {
// simply ignore this error
console.log(error);
},
async: false
}).fail(function () {
// ignore the error and do nothing else
console.log("$.get failed!");
});
这也具有在受 .htaccess 文件保护的登台机器上再次请求用户凭据的副作用,因为浏览器认为用户未经过身份验证,因此在以下请求中,用户需要重新输入他的 http 凭据.
有什么办法可以完全忽略这个错误?
编辑
目前我有一个完全缓存应用程序端的 HTML 模板,出于性能原因,我想保留此行为。布局中唯一更改的部分是当前用户的登录信息,因此我使用未登录用户的默认标记呈现(缓存)页面,然后使用 jQuery 我将标记的相关元素替换为ajax 调用返回的登录信息。因此,如果用户没有登录并且 ajax 端点返回 401 我不需要任何东西,那么标记应该保持不变。
此时一切正常,唯一丑陋的是我在控制台中有 401 javascript 错误,我想摆脱它。
这是我正在谈论的消息的屏幕截图:
【问题讨论】:
-
@RachelGallen 已经这样做并尝试了那里的所有建议,处理程序已执行,但仍然显示错误。我想完全避免它,因为在这种情况下,脚本仅在用户登录时才添加一个 dom 元素,如果他不是,我想简单地忽略该调用。
-
嗯嗯嗯,希望你早日找到答案。
-
你能否提供更多关于你所期望的行为的细节。例如,当您说“忽略”时,您希望发生什么?
-
@MattRay 我已经用更多细节更新了这个问题。
标签: jquery http browser http-status-code-401