ajax调用完成后,有什么方法可以调用另一个函数吗? 我不想从ajax的成功处理程序中调用它,因为此ajax调用用于多个领域,所以从那里切换会很麻烦? 现在,我通过在此ajax调用语句上使用set timeout并在超时内执行下一步操作以一种不好的方式进行操作。
问题:
function my_ajax(){
// ajax呼叫在这里... }
通话地点: my_ajax(); 陈述1;
另一个致电地点: my_ajax(); statement2;
有什么想法吗?
谢谢
答案 0 :(得分:0)
如果应始终调用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" );
});
答案 1 :(得分:0)
您可以使用接受回调作为参数的函数来封装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') })
答案 2 :(得分:0)
我也在这里使用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);
}
答案 3 :(得分:0)
因此返回Ajax对象,并使用它分配自定义的done方法。
function myAjax() {
return $.ajax( "fooPath" )
}
myAjax.done(function () { console.log(1) })
myAjax.done(function () { console.log(2) })
答案 4 :(得分:0)
ajax默认是异步的。 如果我了解您需要等待一个ajax的完整响应,然后在其他ajax中使用...
使用本地jascript这类工作有些复杂。...可以通过 setInterval 和 clearInterval 来解决,
想法
我过去曾在globals vars工作。 setInterval,定义一个连续执行的customcustom函数,并返回一个id,以在将来停止它们。否则...执行第二个ajax ...和clearInterval以停止连续执行
当然, jQuery 提供了一种简便的方法来执行此操作……称为“何时”。
$.when( $.ajax( "test.php" ) ).then(function( data, textStatus, jqXHR ) {
// here ajax2
$.ajax( "test2.php" )
});