Javascript数组变量范围

时间:2014-10-24 08:58:16

标签: javascript jquery ajax

我在Javascript中遇到数组变量范围的问题。这是我的代码



var features = new Array();
var x = 0;

$.ajax({
  async: true,
  url: domain + "client/applications/getFeatures",
  dataType: 'json',
  success: function(data) {
    if (data.code == 200) {
      $.each(data.data, function(i, val) {
        features[x] = val.features_value;
        x++;

      });
    }
  }
});

alert(features[0]);




弹出窗口的结果总是"取消定义"。你有解决方案吗?谢谢

2 个答案:

答案 0 :(得分:3)

你的问题不在于变量范围,而在于异步代码。

在成功回调之前触发了警报,因此尚未设置功能。做这样的事情:

$.ajax({
  // ... other AJAX opts
  success: function(data){
    var features = new Array();
    if(data.code == 200){             
      var x = 0;
      $.each(data.data, function(i, val){
        features[x]=val.features_value;                    
        x++;
      });        

    }
    alert(features[0]);
  }
});

答案 1 :(得分:1)

如果你需要使用alert(); (例如,你没有使用它进行调试)那么你需要将它包含在成功函数中,因为它是异步的,需要等到它在显示值之前得到响应! / p>