【问题标题】:How can I set a Jquery Ajax middleware that only works on 401 or 403 status code?如何设置仅适用于 401 或 403 状态代码的 Jquery Ajax 中间件?
【发布时间】:2022-12-19 17:00:12
【问题描述】:

我正在使用 Dotnet 版本 6.0 的 Aspnet Core MVC。

我正在尝试处理 ajax 结果。我想设置一个 ajax 中间件来捕获 401 或 403 状态代码并对其进行处理。如果我不这样做,我必须检查每个 ajax 代码的成功和错误部分中的 401 状态代码。

我们可以在布局上设置一个中间件或任何快捷代码来处理这个 XHR 请求吗?

我在我的项目上试过这个链接:Global AJAX Handler,但我不确定它是否覆盖了我的本地 ajax 代码。似乎没有用。这是我在布局视图脚本上的 ajax 全局处理程序。

`

 $(document).ajaxError(function (event, jqxhr, settings, thrownError) {

            if (jqxhr.statusCode == 401) {
                log("401");
                event.preventDefault();
                window.location.reload();
            }
        });

` 这是我在任何视图上使用 ajax 的示例:

 function ExampleMethod() {
            $.ajax({
                method: "GET",
                url: "xxxxxxx",
                beforeSend: function () {
                   
                },
                success: function (res) {
                    
                },
                error: function (xhr) {
                    
                }
            });

所以我想在出现 401 错误时重写 ExampleMethod。我的想法可能是错误的。我的问题是我想用一种方法控制这个 ajax 401 响应......

【问题讨论】:

    标签: javascript jquery ajax model-view-controller xmlhttprequest


    【解决方案1】:

    如果您想在导致 401 错误时覆盖 Ajax 请求的行为,您可以使用 .ajax() 方法而不是 .ajaxError()。 .ajax() 方法允许您指定一个函数,如果 Ajax 请求导致错误,该函数将被调用。

    以下是如何使用 .ajax() 方法处理 401 错误的示例:

    $.ajax({
      url: 'https://example.com/api/users',
      type: 'GET',
      error: function(jqxhr, status, error) {
        if (jqxhr.status === 401) {
          // Handle the error
        }
      }
    });
    

    在上面的代码中,我们使用 .ajax() 方法向 /api/users 端点发出 GET 请求。如果请求导致错误,将调用错误函数并传递 jqxhr、status 和 error 参数。

    在error函数中,我们检查jqxhr对象的status属性是否等于401,如果是,我们可以根据需要处理错误。

    使用 .ajax() 方法而不是 .ajaxError() 的一个优点是您可以为每个单独的 Ajax 请求指定一个错误函数,因此您可以更好地控制错误的处理方式。

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 2015-10-24
      • 1970-01-01
      • 2016-08-08
      相关资源
      最近更新 更多