如何从$.ajax
函数内部返回值?
这是我的基本设置:
function something(){
var id = 0;
$.ajax({
'url':'/some/url',
'type':'GET',
'data':{'some':'data'},
'success':function(data){
id = data['id'];
}
});
return id;
}
答案 0 :(得分:17)
使用回调函数,它是JavaScript方式:
function something(callback){
$.ajax({
'url':'/some/url',
'type':'GET',
'data':{'some':'data'},
'success': callback
});
}
something(function (data) {
data['id']; // use it here
})
答案 1 :(得分:5)
除了使用其他人指出的回调函数外,另一种选择是将其更改为synchronous
请求:
function something(){
var id = 0;
$.ajax({
'url':'/some/url',
'type':'GET',
'async':false,
'data':{'some':'data'},
'success':function(data){
id = data['id'];
}
});
return id;
}
请记住,当请求处于活动状态时,同步呼叫是阻塞呼叫。
答案 2 :(得分:3)
由于AJAX是异步的,你不能,因为你的AJAX调用不会立即返回。你可以做什么,人们通常做什么,是采取回调函数,然后用返回值调用它。例如:
function something(callback) {
var id = 0;
$.ajax({
'url':'/some/url',
'type':'GET',
'data':{'some':'data'},
'success':function(data){
callback(data['id']);
}
});
}
something(function(id) {
alert(id);
});
请注意,您可以始终使您的请求同步,并且它会等到它有数据并且您可以立即返回它,但如果您的请求需要的时间超过一小段时间,整个脚本执行,可能还有页面,将是停止,直到它返回。