0

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

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

4

2 回答 2

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);
});
于 2013-04-12T06:45:06.477 回答
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;

}

于 2013-04-12T06:51:25.750 回答