将JQuery .get()结果传递给变量时捕获HTTP错误

时间:2014-11-21 16:04:26

标签: jquery

如果用户已登录,则以下代码会成功向GET文件执行timeout.ashx请求:

    function StillHereClicked() {
        var loadedResult;
        $.get("/timeout.ashx", function (loadedResult) {
            if (loadedResult == 'Extended') {
                // stay logged in (code removed for brevity)
            } else {
                LogOut();
            }
        }, 'text');
    }

但是,如果用户的会话因任何原因而被终止,GET请求会在浏览器中引发401 Unauthorized异常。

任何人都可以帮助我抓住可能出现的任何错误(401,404等),并在每种情况下只注销用户吗?如果timeout.ashx返回任何而不是值为'Extended'的字符串,则应该注销用户。

我试图遵循.get() documentation,但我无法弄清楚它们似乎正在处理多个回调的语法,而其他示例似乎使AJAX和MVC添加到顶部的问题变得复杂。

1 个答案:

答案 0 :(得分:0)

最终计算出来,尽管大多数在线使用弃用代码的例子...... .ajax()具备所需的所有功能。

    function StillHereClicked() {
        $.ajax({
            type: "GET",
            url: "/timeout.ashx",
            dataType: "text",
            cache: false
        })
        .done(function (data) {
            if (data == "Extended") {
                // stay logged in (code removed for brevity)
            } else {
                LogOut();
            }
        })
        .fail(function (xhr, textStatus) {
            LogOut();
        });
    }