[英]Is there any way we can call another function after the ajax call completed?
在ajax调用完成之后,有什么方法可以调用另一个函数? 我不想从ajax的成功处理程序中调用它,因为此ajax调用用于多个领域,所以从那里切换会很麻烦? 现在,我通过在此ajax调用语句上使用set timeout并在超时内执行下一步操作以一种不好的方式进行操作。
问题:
function my_ajax(){
// ajax呼叫在这里....}
调用的地方:my_ajax(); 陈述1;
另一个调用位置:my_ajax(); 语句2;
有任何想法吗?
谢谢
如果应始终调用ajax之后的下一个调用,则可以使用.always()。
// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax( "example.php" )
.done(function() {
alert( "success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "complete" );
});
您可以使用接受回调作为参数的函数来封装ajax:
function my_ajax(callback) {
$.ajax('example.php').done(callback)
}
然后,您可以使用所需的回调进行调用:
// Will log 'AAA' on success of this request
my_ajax(function() { console.log('AAA') })
// Will log 'BBB' on success of this request
my_ajax(function() { console.log('BBB') })
我在这里也假设使用jQuery,但是您可以将ajax包装在函数中。
function myAjax() {
return $.ajax(/* ... */)
}
const ajaxOne = myAjax();
ajaxOne.done(function() { /* do stuff one */ })
const ajaxTwo = myAjax();
ajaxTwo.done(functiion() { /* do stuff two */ })
稍微讲一下,您可以将成功/失败功能作为回调传递
function myAjax(success, fail) {
const error = (fail !== undefined)
? fail
: function(err) { console.error(err) };
return $.ajax(/* ... */)
.done(success)
.fail(error);
}
因此,返回Ajax对象并使用它来分配自定义的done方法。
function myAjax() {
return $.ajax( "fooPath" )
}
myAjax.done(function () { console.log(1) })
myAjax.done(function () { console.log(2) })
ajax默认情况下是异步的..如果我了解您需要等待一个ajax的完整响应,并在其他ajax中使用...
使用本地jascript,这种类型的工作有些复杂。...可以使用setInterval和clearInterval解决,
这个主意
我过去曾在globals vars工作。 setInterval,定义一个连续执行的custom函数,并返回一个id,以在将来停止它们。.....现在在您的自定义函数中,然后定义两个条件,第一个是停止子句(您的第一个ajax不完整)否则...执行第二个ajax ...和clearInterval停止连续执行
当然, jQuery提供了一种简便的方法来执行此操作……被称为“ when”。
$.when( $.ajax( "test.php" ) ).then(function( data, textStatus, jqXHR ) {
// here ajax2
$.ajax( "test2.php" )
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.