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