在浏览器完全发送ajax请求后,如何在myFunc1
中调用我的函数jquery
?
我想在jquery ajax 发送后运行回调函数。我不想在complete
或success
上执行此操作,因为我不想等待请求完成。我想在浏览器发送ajax请求后立即启动它。
这是我需要的用例:
我想在发出ajax请求后运行一个函数。我的原始代码是:
$.ajax({url: 'x.html'});
myFunc1();
在`myFunc1()更改浏览器位置的情况下,浏览器将取消挂起的ajax请求。
我目前的解决方案是:
$.ajax({url: 'x.html', complete: myFunc1});
这确保在ajax完成之前不会调用myFunc1
。尽管此解决方案有效,但由于myFunc1
在请求完成之前不会运行,因此效率低下。由于我不关心ajax请求返回什么,无论是失败还是成功,我都不需要等待它完成运行myFunc1
函数。
答案 0 :(得分: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的权威来源)
答案 1 :(得分:0)
实际上听起来你希望在AJAX请求开始时触发该函数。
$("#btn-ajax").ajaxStart(myFunc1);
function myFunc1() {
$("#message").html("I don't really care if the ajax call succeeds.");
}
答案 2 :(得分:0)
这是我在完成AJAX调用后充分运行我的回调函数所做的操作,因此浏览器不会取消它而不必等待服务器完成重新获取:
var cb = function(){
window.document.location.href="http://google.com";
}
$.ajax({
url: 'x.html',
complete: cb,
timeout: 100
});
此处超时确保如果我的服务器未在100ms
中响应,则执行callback
。 100ms
也足以让浏览器发送请求。
我尝试了状态代码,最后没有使用它们。我发现它们不可靠的跨浏览器和JSONP请求丢失。
答案 3 :(得分:-1)
如果您真的不在乎ajax调用是否成功,您可以尝试使用settimeout方法,只需估计请求应该花多长时间。你还有一个完成方法,以防它在你估计之前完成。这是一种黑客行为,但它可能对你有用。例如代码将是这样的:
$.ajax({url: 'x.html', complete: myFunc1});
setTimeout(myFunc1,100);
答案 4 :(得分:-1)
我想你想使用beforeSend选项。