【问题标题】:How to avoid previous ajax response if interrupted by other page load in SPA(Single Page Application)?如果在 SPA(单页应用程序)中被其他页面加载中断,如何避免以前的 ajax 响应?
【发布时间】:2019-10-16 10:58:30
【问题描述】:

我可以问一些关于 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】:

您可以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();
}

【讨论】:

  • 感谢@mkHun。我会试试的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多