JS Ajax函数没有设置变量值

时间:2013-04-12 06:42:13

标签: javascript jquery ajax

我有一个简单的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;
  }

问题是,我在成功函数中获取数据,但无法从主函数返回。

2 个答案:

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

}