jQuery中使用$.each()遍历后台响应的json字符串问题

Posted tincyho

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery中使用$.each()遍历后台响应的json字符串问题相关的知识,希望对你有一定的参考价值。

今天在做练习项目的时候,使用$.each()方法遍历后台传过来的json字符串时,chrome浏览器中发现如下问题  Cannot use ‘in‘ operator to search for ‘length‘...... 琢磨了好久,百思不得其解。前后台代码分别如下:

后台返回json字符串:

$sql = "select pid, pname, price, pic, did, count from jd_product, jd_cart_detail where pid=productId and cartId=$cid";
$result = mysqli_query($conn, $sql);
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
echo json_encode($list);

前台接收并处理:

$.ajax({
type: "GET",
url: "data/cart_detail_select.php",
data: {uid: loginUid},
success: function(list){
var h = "";
$.each(list, function(i, p){
h += `
 some code....
`;
});
$("#cart>tbody").html(h);
},
error: function(obj){
alert("响应完成但有错误");
console.log(obj);
}
});

好了,问题来了,$.each()方法中,list参数就是后台传来的json字符串(echo json_encode($list);),然而在各种调试后,浏览器依然顽固的报着文章开头的错误。无奈,几经尝试,最终找到了解决方案,虽然解决了问题,但是我还是不明白为什么这样做,解决如下:

将list参数,再用JSON.parse(list),包装一次,方可正常运行。

出问题那一行代码修改后如下:

$.each(JSON.parse(list), function(i, p){})。

如果有大神看到此文章并且知道原因,请不惜赐教。

以上是关于jQuery中使用$.each()遍历后台响应的json字符串问题的主要内容,如果未能解决你的问题,请参考以下文章

jquery each报 Uncaught TypeError: Cannot use 'in' operator to search for错误

Jquery之each函数详解

jQuery 使用 $.each 遍历对象

jquery怎么遍历二维数组

jquery each() 怎么遍历到 我动态创建div 中的p标签中的内容 求解

JavaScript 学习-41.jQuery 中 each 遍历