Foreach-loop for Array,通过AJAX查询获得

时间:2012-09-01 06:10:23

标签: javascript ajax foreach iteration

我有JS代码:

$("#select_bank").change(function () {
  selected_bank = $("#select_bank option:selected").text();

  $.ajax({
    type: 'POST',
    dataType: 'html',
    data: {
      selectedBank: selected_bank
    },
    url: '<?= base_url() . 'atm/select_region'; ?>',
    success: function (list_regions) {
      foreach(keyVar in list_regions) {
        alert(list_regions[keyVar]);
      }
    }
  });
});

在回调“成功”上我从服务器的脚本中获取数组 - 在警报中我看到“数组” - 所以我想在客户端通过这个数组进行迭代,就像上面我编写的那样,但是在做的时候我得到了错误在控制台中 - “var keyVar未定义”。据我所知,我需要将list_regions param作为数组或其他方式进行类型转换来修复它。请问,如何让它变得更好? 谢谢!

upd:enter image description here

3 个答案:

答案 0 :(得分:5)

如果我是对的,你就不能以这种方式将foreach循环转换为jquery。

您应该使用.each来迭代值

$.each(list_regions, function(index, value) {
  alert(value);
});

您可以找到更多信息here

答案 1 :(得分:3)

Javascript没有foreach构造。使用jQuery的$.each方法

答案 2 :(得分:0)

试试这个:

$("#select_bank").change(function(){
    // The following line was missing a var declaration,
    // Making it an implicit global
    var selected_bank = $("#select_bank option:selected").text();

    $.ajax({
        type:'POST',
        dataType:'html',
        data: { selectedBank: selected_bank },
        url:'<?=base_url().'atm/select_region'; ?>',
        success:function(list_regions){
            var keyVar;
            for(keyVar in list_regions) {
                if (list_regions.hasOwnProperty(keyVar)) {
                    alert(list_regions[keyVar]);
                }
            }
        }
    });

});