如何获得jqueryajax调用的结果,然后调用另一个函数
基本上,我试图调用一个函数(函数1),从另一个函数(函数2)得到结果。这个函数2正在进行一个ajax调用 所以代码是这样的:如何获得jqueryajax调用的结果,然后调用另一个函数,ajax,jquery,call,Ajax,Jquery,Call,基本上,我试图调用一个函数(函数1),从另一个函数(函数2)得到结果。这个函数2正在进行一个ajax调用 所以代码是这样的: function f1 () { var results = f2(); } function f2() { $.ajax({ type: 'POST', url: '/test.php', success: function(msg){ } }); } 我知道是我在成功函数中显示
function f1 () {
var results = f2();
}
function f2() {
$.ajax({
type: 'POST',
url: '/test.php',
success: function(msg){
}
});
}
我知道是我在成功函数中显示了一个警报,我得到了结果。但是,我们如何才能使这个结果发回呢
我尝试在函数2中执行类似的操作,但没有成功:
返回味精
感谢您的帮助理论上,这可以通过jQuery的
async:false设置实现。该设置使调用同步,即浏览器等待调用完成
不过,这被认为是不好的做法,因为它会冻结浏览器。您应该重新构造脚本,以便在success
回调中执行相关操作,而不是f1
。我知道这比您在f1()
中所做的要不方便,但这是处理Ajax异步特性的正确方法。您可以强制使请求同步(有点失去Ajax的好处),但要使代码正常工作:
function f2() {
var ret = false;
$.ajax({
type: 'POST',
url: '/test.php',
async:false,
success: function(msg){
ret = msg
}
});
return ret;
}
否则,如果要使函数保持异步,则必须在success
函数中添加回调
function f2() {
$.ajax({
type: 'POST',
url: '/test.php',
async:false,
success: function(msg){
doSomething(msg);
}
});
}
谢谢你们的回答,伙计们,因为我知道这是一个异步/同步问题。。。我的目的是避免多次使用同一个AJAX调用,因为在调用结果上我有许多不同的事情要做。所以我想要的方法是让一个、两个或更多不同的函数调用AJAX函数。。。但据我所知,如果我需要保持异步模式,我需要以不同的方式来实现。您在meder的帖子中评论说,尝试使用相同的ajax进行多个调用。你能详细介绍一下吗?