我有一个相当简单的 WinJS Metro 应用程序,它会在从 web 服务获取一些 JSON 数据之前询问用户的用户名和密码。
我使用 jQuery.ajax() 来获取数据,并正确设置了基本身份验证标头。但是,如果用户输入了错误的凭据,并且服务器返回 401,metro 运行时会显示登录屏幕。除非用户在运行时提供的登录屏幕上按下“取消”,否则不会调用传递给 jQuery.ajax() 函数的错误处理程序。
我希望程序处理失败的登录尝试,有没有办法抑制运行时登录屏幕?
我有一个相当简单的 WinJS Metro 应用程序,它会在从 web 服务获取一些 JSON 数据之前询问用户的用户名和密码。
我使用 jQuery.ajax() 来获取数据,并正确设置了基本身份验证标头。但是,如果用户输入了错误的凭据,并且服务器返回 401,metro 运行时会显示登录屏幕。除非用户在运行时提供的登录屏幕上按下“取消”,否则不会调用传递给 jQuery.ajax() 函数的错误处理程序。
我希望程序处理失败的登录尝试,有没有办法抑制运行时登录屏幕?
不确定您在做什么,但是如果用户提供了错误的用户名/密码,以下代码会正确触发错误处理程序:
var userInfo = getCurrentUserInfo();
$.ajax({
url: URL,
dataType: 'json',
success: jsonCallback,
username: userInfo.username,
password: userInfo.password,
error: function (jqXHR, textStatus, errorThrown) {
errorHandler(jqXHR, textStatus, errorThrown);
}
}
您是自己提供用户名/密码,还是等待系统的登录对话框出现?恐怕一旦出现,就像您说的那样,在用户取消之前无法返回您的代码。