javascript - 如果在 SPA(单页应用程序)中被其他页面加载中断,如何避免以前的 ajax 响应?
问题描述
我可以问一些关于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) {
}
});
解决方案
您可以中止请求。
如果请求已经发送,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();
}
推荐阅读
- visual-studio-code - 查看所有打开文件的 VSCode 自动完成扩展
- ruby-on-rails - 如何创建 schema.rb 文件的 CSV/Excel
- swift - swift代码中的不兼容或真正错误
- python - tkinter 和 pygame.midi 之间的冲突
- scala - 在 Scala 中使用 Cats 库中的 Validated
- excel - 如何使用 VBA 从工作表创建多个 Excel 工作簿
- c# - 构建和运行时出现 dotnet new blazor 错误
- django - django过滤器没有匹配
- python - 解析包含逻辑的字符串以创建 Django Q 对象
- angular - Angular 5+等待返回承诺的服务