如果被SPA(单页应用程序)中的其他页面加载中断,如何避免先前的ajax响应?

问题描述 投票:0回答:1

我可以问一下有关SPA的一些概念吗?我使用SPA开发了客户端网页。在菜单A中单击它会请求一些Ajax调用并等待响应。在这段时间内,如果我转到另一页B,则A的ajax响应到来,它正在尝试调用已加载的javascript代码,因为浏览器未在SPA中执行刷新。如何避免这种情况并忽略之前所有A的ajax响应?

$.ajax({
      url: url,
      type: "GET",
      dataType: "json",
      headers: {"Authorization": 'Token ' + myToken},
      success: function(response) {
          my_callback(response); // <== I want to block this if leaves current page...
      },
      error: function(response) {
      },
      complete: function(response) {
      }
    });
javascript jquery html single-page-application
1个回答
0
投票

您可以abort该请求。

XMLHttpRequest.abort()方法中止请求,如果它已经发送过。当请求中止时,其readyState更改为XMLHttpRequest.UNSENT(0),并且请求的状态码设置为0。

    var xhr = $.ajax({
        url: url,
        type: "GET",
        dataType: "json",
        headers: { "Authorization": 'Token ' + myToken },
        success: function (response) {
            my_callback(response); // <== I want to block this if leaves current page...
        },
        error: function (response) {
        },
        complete: function (response) {
        }
    });

if(pageNavigates){
    xhr.abort();
}
© www.soinside.com 2019 - 2024. All rights reserved.