0

我有一个相当简单的 WinJS Metro 应用程序,它会在从 web 服务获取一些 JSON 数据之前询问用户的用户名和密码。

我使用 jQuery.ajax() 来获取数据,并正确设置了基本身份验证标头。但是,如果用户输入了错误的凭据,并且服务器返回 401,metro 运行时会显示登录屏幕。除非用户在运行时提供的登录屏幕上按下“取消”,否则不会调用传递给 jQuery.ajax() 函数的错误处理程序。

我希望程序处理失败的登录尝试,有没有办法抑制运行时登录屏幕?

4

1 回答 1

0

不确定您在做什么,但是如果用户提供了错误的用户名/密码,以下代码会正确触发错误处理程序:

    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);
        }
    }

您是自己提供用户名/密码,还是等待系统的登录对话框出现?恐怕一旦出现,就像您说的那样,在用户取消之前无法返回您的代码。

于 2012-09-12T16:27:30.343 回答