【问题标题】:Cant iterate through an associative array using jquery.each无法使用 jquery.each 遍历关联数组
【发布时间】:2017-06-07 03:54:07
【问题描述】:

嗯,我以前用过jquery.each,但今天似乎是我糟糕的一天,因为我所做的一切都出错了。我使用以下内容从数组中获取值,但我得到了

TypeError: 'in' 操作数 a 无效

JS

var updateBoard = function() {
        $.ajax({
            type: "POST",
            url: "engine/main.php",
            data: {code: 2},
            success: function(response) {
                $.each(response, function(i, val) {
                    console.log(i);
                });
                setTimeout(updateBoard, 2500);
            }
        });
    };
    updateBoard();

我的成功功能中的响应

Array
(
    [0] => Array
        (
            [cell] => a2
            [sign] => ◯
        )

    [1] => Array
        (
            [cell] => b2
            [sign] => ◯
        )

)

【问题讨论】:

  • 您的回复(粘贴时)看起来不像一个 javascript 数组
  • 它来自 PHP 脚本。
  • 如果你想用javascript处理它,我想你应该把它序列化成一些JSON对象/数组。
  • 实际上我正在将解码的 json 数组(我粘贴)发送到客户端。我们不能只遍历数组来获取值吗?
  • 很遗憾,这不是有效的 JSON...

标签: javascript jquery arrays each


【解决方案1】:

试试

var obj = JSON.parse(response);
$(obj).each(function(i, val) {
  console.log(val.cell);
  console.log(val.sign);
});

【讨论】:

    【解决方案2】:

    每个都只在 jQuery 元素上起作用,但响应不与 jQuery 选择器绑定,所以只需像这样使用 javascript 循环

    如果你的响应是一个数组,你可以使用 es6 的 map 函数或 foreach 函数

    尝试:

    response.map(function(obj){
      console.log(obj)
    })
    

    response.forEach(function(obj){
      console.log(obj)
    })
    

    MDN 来源

    foreach

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

    地图

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

    【讨论】:

    • 我知道了TypeError: response.forEach is not a function
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多