Jquery 如何从Ajax请求中获取回调函数的值
这个问题可能与我在这里问的问题有关: 现在,我面临另一个问题。如何从回调函数中检索值Jquery 如何从Ajax请求中获取回调函数的值,jquery,asynchronous,callback,Jquery,Asynchronous,Callback,这个问题可能与我在这里问的问题有关: 现在,我面临另一个问题。如何从回调函数中检索值 function find_bus_route(array_bustops,callback){ $.ajax({ type: 'POST', async: true, url: 'find_routenum.php', data:{ arra
function find_bus_route(array_bustops,callback){
$.ajax({
type: 'POST',
async: true,
url: 'find_routenum.php',
data:{
array_bustops:JSON.stringify(array_bustops)
},
dataType:'json', //html,xml
success: function(my_results){
callback(my_results);
},
error:function(x,e){
if(x.status==0){
alert('You are offline!!\n Please Check Your Network.');
}else if(x.status==404){
alert('Requested URL not found.');
}
}
});
}//end function
var arr_one;
find_bus_route(arr_bus,function (data){
arr_one=data;
alert(arr_one) //has correct value
}
alert (arr_one) //-->This returns undefined..
啊,一个似乎超出了范围
if(arr_one == arr_two){
//do something.
}
实际上我想做的是:
假设没有回调且async设置为false,并且函数find_bus_route返回一个值
var arr_one=find_bus_route(arr_stop1);
var arr_two=find_bus_route(arr_stop2);
if(arr_one==arr_two){
//do something
}
else {
//do something
};
由于您以异步方式调用外部页面,因此不会立即得到结果(取决于服务器/网络负载) 在代码中,第二个警报(显示
undefined
)在AJAX调用之后执行(可能无法获得响应)。另一个在获取JSON响应时执行。只能在success
回调中使用返回值
我想你应该向我们解释你到底想做什么
编辑:
我想你需要的是延迟对象,看。
使用,您可以等待两个异步调用。第一个例子就是你要问的。在when回调中,比较两个结果。ajax中的第一个“A”表示异步。当“如果”触发时,ajax尚未完成。你需要把它转移到你的成功回调中