2013-04-12 23 views
0

我有一个简单的Ajax功能JS的Ajax功能不设置变量值

function get_country(request_term) { 
    var country_list = ''; 
    $.ajax({ 
     url : "activity/get_country", 
     type : "POST", 
     cache : false, 
     data : { 
     request_term : request_term 
     }, 
     success : function(data) { 
     if(data != '') { 
      country_list = $.parseJSON(data); 
      alert(country_list);    ----> Got value here 
     } 
     } 
    }); 
    alert(country_list);      ----> Not getting value here 
    return country_list; 
    } 

的问题是,我得到的成功,函数的数据,但无法从main函数返回。

+0

的可能重复[如何返回Ajax响应文本?](http://stackoverflow.com/questions/1225667/how-to-return -ajax-response-text) – Quentin

回答

1

因为ajax是异步的,所以不知道success函数什么时候会完成(或者是否会完成完成)。因此,任何需要ajax调用结果的代码都必须依赖于ajax回调。

jQuery使绑定其他回调变得非常容易。

return $.ajax({ /* rest of your code */ 

get_country(request_term).done(function (data) { 
    //are you sure JSON isn't returned already? 
    country_list = $.parseJSON(data); 
}); 
1

您可以通过将async设置为false来实现。但这不是一种推荐方式。

此代码将返回COUNTRY_LIST

function get_country(request_term) { 
var country_list = ''; 
$.ajax({ 
    url : "activity/get_country", 
    type : "POST", 
    cache : false, 
    async : false, 
    data : { 
    request_term : request_term 
    }, 
    success : function(data) { 
    if(data != '') { 
     country_list = $.parseJSON(data); 
     alert(country_list);    
    } 
    } 
}); 
alert(country_list);      
return country_list; 

}

+0

嗨。谢谢。为什么它不推荐? – Dino

+0

@DBK请reffer此链接http://stackoverflow.com/questions/6517403/what-are-the-drawbacks-of-using-synchronous-ajax-call – 2013-04-12 08:31:51