繁体   English   中英

JS Ajax函数没有设置变量值

[英]JS Ajax function not setting variable value

我有一个简单的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函数返回它。

由于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);
});

您可以通过将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;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM