【问题标题】:Foreach-loop for Array, which got via AJAX-queryForeach-loop for Array,通过 AJAX-query 获得
【发布时间】:2012-08-26 20:43:40
【问题描述】:

我有 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 参数类型转换为数组或其他方式来修复它。请问,怎样才能变好? 谢谢!

更新:

【问题讨论】:

  • 尝试将 'foreach' 更改为 'for'

标签: javascript ajax foreach iteration


【解决方案1】:

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

您应该使用 .each 来迭代值

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

您可以找到更多信息here。

【讨论】:

  • 感谢您的建议,但正如我在第一条评论中提到的那样,它可以正常工作 - “似乎我的服务器脚本有问题:我收到带有字母“A”的警报序列,"r","r","a","y" 而不是数组的值?"
【解决方案2】:

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

【讨论】:

  • Eugene 正在尝试使用 JavaScript 构造,而您跳起来告诉他 jQuery 解决方案。仅仅因为 Eugene 已经在使用 jQuery 并不是提倡他们忽略该语言的内置结构的好理由。
  • @Mythril,但$.each() 在这种情况下更有用
  • 究竟如何更有用?
  • 请不要争论。只是我想流式传输以使用纯 JavaScript 而不是 Jquery 来执行一些简单的操作,当它可能以相当简单的方式时)
  • @Daniil,两者都可以在 for..in 循环中使用
【解决方案3】:

试试这个:

$("#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]);
                }
            }
        }
    });

});

【讨论】:

  • 似乎我的服务器脚本有问题:我收到带有字母“A”、“r”、“r”、“a”、“y”的警报序列,而不是数组的值?
  • 我的猜测是 base_url() 正在返回一个 PHP 数组,该数组被转换为“Array”的字符串,然后在 JavaScript 中逐个字母地迭代
  • 我已经更新了帖子以显示我在 JS-script 上得到的信息。但要做到这一点 - 我在 CodeIgnater 中做了一个肮脏的把戏,但我真的想避免这种糟糕的方式......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
相关资源
最近更新 更多