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

时间:2011-11-18 18:26:55

标签: jquery ajax

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

这是我的基本设置:

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

  return id;
}

3 个答案:

答案 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);
});

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