我有一个简单的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;
}
问题是,我在成功函数中获取数据,但无法从主函数返回。
答案 0 :(得分: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 :(得分: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;
}