5

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

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

这是我需要这个的用例:

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

  $.ajax({url: 'x.html'});
  myFunc1();

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

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

  $.ajax({url: 'x.html', complete: myFunc1});

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

4

4 回答 4

0

实际上听起来您希望该函数在 AJAX 请求开始时触发。

$("#btn-ajax").ajaxStart(myFunc1);

function myFunc1() {
   $("#message").html("I don't really care if the ajax call succeeds.");
}
于 2013-09-07T07:52:09.287 回答
0

如果您查看规范:

http://www.w3.org/TR/XMLHttpRequest/

您会看到 2 表示标头已经返回。

const unsigned short **HEADERS_RECEIVED** = 2;

这与 jqXHR 的成功基本相同。您的浏览器可能会有所不同 =)

不认真..它们会有所不同,这是jquery不能全部支持它们并选择抽象它们的另一个原因:

http://msdn.microsoft.com/library/ie/ms534361.aspx

https://developer.mozilla.org/en-US/docs/Web/API/document.readyState

(找不到 chrome 的权威来源)

于 2013-09-05T17:47:31.347 回答
0

这是我在进行 AJAX 调用后充分运行我的回调函数所做的,因此浏览器不会取消它并且无需等待服务器完成请求:

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

  $.ajax({
    url: 'x.html',
    complete: cb,
    timeout: 100
  });

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

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

于 2013-09-28T17:24:09.007 回答
-1

我认为您想使用 beforeSend 选项。

http://api.jquery.com/jQuery.ajax/

于 2013-09-07T04:00:39.153 回答