在jquery中如何在发送ajax请求后调用函数?

use*_*245 5 javascript ajax jquery readystate onreadystatechange

如何调用我的函数:myFunc1jquery浏览器完全发送 ajax 请求之后?

我想在发送jquery ajax 后运行回调函数。我不想这样做,complete或者success因为我不想等待请求完成。我想在从浏览器发送 ajax 请求后立即触发它。

这是我需要的用例:

我想在发出 ajax 请求后运行一个函数。我的原始代码是这样的:

  $.ajax({url: 'x.html'});
  myFunc1();
Run Code Online (Sandbox Code Playgroud)

在 myFunc1() 更改浏览器位置的情况下,浏览器将取消挂起的 ajax 请求。

我目前的解决方案是这样做:

  $.ajax({url: 'x.html', complete: myFunc1});
Run Code Online (Sandbox Code Playgroud)

这确保myFunc1在 ajax 完成之前不会调用它。尽管此解决方案有效,但效率低下,因为myFunc1在请求完成之前不会运行。由于我不在乎ajax请求返回什么,无论失败还是成功,我不需要等待它完成运行该myFunc1函数。

use*_*245 0

这就是我在 AJAX 调用之后充分运行我的回调函数所做的事情,这样浏览器就不会取消它,而不必等待服务器完成请求:

  var cb = function(){
    window.document.location.href="http://google.com";
  }

  $.ajax({
    url: 'x.html',
    complete: cb,
    timeout: 100
  });
Run Code Online (Sandbox Code Playgroud)

这里的超时确保如果我的服务器没有响应100ms,则callback执行。100ms浏览器也有足够的时间发送请求。

我尝试了状态代码,最终没有使用它们。我发现它们跨浏览器不可靠并且 JSONP 请求丢失。