返回$ .ajax()函数内部的值

如何从$.ajax函数内部返回值?

这是我的基本设置:

 function something(){ var id = 0; $.ajax({ 'url':'/some/url', 'type':'GET', 'data':{'some':'data'}, 'success':function(data){ id = data['id']; } }); return id; } 

使用回调函数,它是JavaScript方式:

 function something(callback){ $.ajax({ 'url':'/some/url', 'type':'GET', 'data':{'some':'data'}, 'success': callback }); } something(function (data) { data['id']; // use it here }) 

除了使用其他人指出的回调函数之外,另一个选择是将其更改为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; } 

请记住,同步调用是请求处于活动状态时的阻塞调用。

由于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); }); 

请注意,您始终可以使请求同步,并且它会等到它有数据并且您可以立即返回它,但如果您的请求需要的时间超过一小会,整个脚本执行(可能是页面)将会暂停,直到它为止。回报。