function foo(arg, ajaxcomplete) {
$.ajax({
//ajaxcall...
success: function() {
//set ajaxcomplete to true
}
}
有什么办法可以做类似的事情知道ajaxcall在函数中完成了吗?谢谢Javascript out功能
function foo(arg, ajaxcomplete) {
$.ajax({
//ajaxcall...
success: function() {
//set ajaxcomplete to true
}
}
有什么办法可以做类似的事情知道ajaxcall在函数中完成了吗?谢谢Javascript out功能
是complete
。它在错误或成功回调之后被解雇。从docs
function foo(arg, ajaxcomplete) {
$.ajax({
success: function() {
alert('O.K.');
},
complete: function(){
alert('We are done');
}
});
}
描述:
完整(jqXHR,textStatus)功能,阵列 甲功能的请求完成(成功和错误回调之后被执行)时被调用。该函数获得两个参数:jqXHR(在jQuery 1.4.x中,XMLHTTPRequest)对象和一个字符串,用于分类请求的状态(“成功”,“未修改”,“错误”,“超时”,“中止”或“parsererror”)。从jQuery 1.5开始,完整的设置可以接受一组函数。每个函数都会依次调用。这是一个Ajax事件。
success()
函数仍然是知道您的AJAX调用已完成的方法。即使包装在一个函数中,它仍然是异步发生的,在你的情况下,功能foo()
将可能已经完成并在success()
函数被调用之前返回。
成功是不够的。发生错误时不会被解雇。看到我的答案。 – gdoron 2012-02-13 15:24:49
您可以使用complete
事件来设置所需的变量,因为无论请求成功还是失败,都会触发它。
function foo(arg, ajaxcomplete) {
$.ajax({
//ajaxcall...
success: function() {
},
complete: function(){
//set ajaxcomplete to true here
}
}
@downvoter - 请评论! – ShankarSangoli 2012-02-13 15:33:07
他低估了这里的所有答案。我有一种不好的感觉,那就是这里的其他答案所有者之一。 – gdoron 2012-02-13 15:43:29
这样的人应该被抛出SO。 – ShankarSangoli 2012-02-13 15:44:55
你可以有ajaxComplete
参数作为回调:
function foo(arg, ajaxcomplete) {
$.ajax({
//ajaxcall...
complete: function() {
ajaxcomplete();
// Some other code here if required
}
}
,你可以调用像这样:
var isComplete = false;
foo('someArg', function() { isComplete = true; });
为什么不只是你需要在成功做什么'成功'回调?你甚至可以传递一个函数来成功调用。国际海事组织(IMO),在成功的时候设置一个标志来通知AJAX何时完成,这违背了你正在使用的回调模型。 – FishBasketGordo 2012-02-13 15:19:19
你能澄清吗?也许包括一些描述你想要做的事情的psuedocode – 2012-02-13 15:19:22