1

我正在尝试使用 jQuery 向某些日志记录服务发出 ajax 请求,该请求是通过单击页面上的链接启动的,但有时我在开发工具中看到该请求的状态为“已取消”。

  1. 是因为比赛条件吗?单击链接会卸载页面,如果请求-响应周期尚未完成,它会被取消吗?
  2. 如果是这样,取消是什么意思?我知道我没有收到响应,我不在乎(无论如何,响应中没有发送有价值的信息),但是我可以指望请求将其发送到服务器吗?

谢谢

4

1 回答 1

0

是的,它将被取消。如果用户单击链接,则链接 URL 加载已开始。当 URL 响应第一个字节时,当前页面上的所有 ajax 请求将立即取消并移动到 URL。

如果要确保日志,则应使用 javascript 取消默认链接单击事件和日志记录,并在日志记录完成后移动到 URL。

<a href="http://example.com" id="link1">Some Link</a>

<script>
$('#link1').on('click', function (e) {
  e.preventDefault();
  $.get('/path/to/logging', function () {
    // move to the URL after logging
    location.href = this.href;
  });
});
</script>
于 2018-02-04T15:34:06.800 回答