【问题标题】:jQuery / Ajax: How to loop through array as part of Ajax success functionjQuery / Ajax:如何在 Ajax 成功函数中循环遍历数组
【发布时间】:2015-10-09 11:34:04
【问题描述】:

我有一个 Ajax 调用,它返回一个数组,需要对这个数组中的每个值做一些事情。

到目前为止,我有以下内容,但这会返回以下错误:

Uncaught TypeError: Cannot use 'in' operator to search for 'length' in array(5)...

有人可以告诉我我在这里做错了什么吗?我如何对每个值做一些事情?

我的阿贾克斯:

$.ajax({        
    type: "post",   
    url: "ajax.php",
    cache: "false",
    data: {
        node: 'fetchValues',
        itemIDs: itemIDs
    },
    success: function(data){
        console.log(data);  // for testing only
        jQuery.each(data, function(index, value){
            console.log(value);
        });
    }
});

“数据”示例(来自控制台日志)

array(5) {
  [1]=>
  string(6) "Value1"
  [2]=>
  string(6) "Value2"
  [3]=>
  string(6) "Value3"
  [4]=>
  string(6) "Value4"
  [5]=>
  string(6) "Value5"
}

非常感谢您的帮助。

【问题讨论】:

  • 你试过简单的for吗?变量 x=0; for(x;x
  • 试试这个 for(var x in data){ console.log(x + ' :' + data[x]);
  • @RicardoPontual:是的,我之前试过这个,但是它返回一个关于长度的错误。
  • @HadiHassan:谢谢。我不需要在循环中使用它吗?
  • @TaneMahuta 我没明白你的意思,但我上面提供的评论将通过 ajax 循环到返回对象中的每个属性

标签: jquery arrays ajax loops


【解决方案1】:

您的数组似乎没有正确解析

在发送响应之前从php端

echo json_encode($result); // REPLACE $result WITH  YOUR OUTPUT ARRAY

在 jquery 方面:

$.ajax({        
    type: "post",   
    url: "ajax.php",
    dataType : 'JSON',
    cache: "false",
    data: {
        node: 'fetchValues',
        itemIDs: itemIDs
    },
    success: function(data){
        console.log(data);  // for testing only
       var data=$.parseJSON(data);
        jQuery.each(data, function(index, value){
            console.log(value);
        });
    }
});

参考:http://api.jquery.com/jquery.parsejson/

【讨论】:

  • 谢谢。我之前尝试过类似的方法,但这会返回以下错误:“Uncaught SyntaxError: Unexpected token a...”
  • @TaneMahuta 在发送响应之前使用 json_encode() 吗?你的服务器端脚本是什么?是 PHP 吗?
  • 不在这里。我应该试试吗?
  • 你的服务器端脚本是什么?是 PHP 吗?
  • 是的 - 目前我只是将数组转储到那里。
【解决方案2】:

您需要将data 变量中的字符串解析为一个对象:

success: function(data){
    console.log(data);  // for testing only
    var res=$.parseJSON(data);
    jQuery.each(res, function(index, value){
        console.log(value);
    });
}

你可以使用

var res=$.parseJSON(data)

或者纯JS:

var res=JSON.parse(data)

Source

【讨论】:

  • 谢谢。我之前尝试过类似的方法,但这会返回以下错误:“Uncaught SyntaxError: Unexpected token a...” - 与上面的答案相同。
  • 尝试在$.each 中提供$(data) 而不是抱怨data
  • 谢谢 - 您的意思是在您的 parseJSON 行中更改它并使用 $.each 而不是 jQuery.each ?
  • 谢谢 - 您的 jQuery.each 中没有数据。 :)
  • 好的。只需 console.log(res)console.log($(res)); 使用我的方法,让我知道你得到了什么?
猜你喜欢
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 2015-11-08
  • 1970-01-01
  • 2018-12-05
  • 2011-01-29
  • 2011-04-26
  • 1970-01-01
相关资源
最近更新 更多