zoukankan      html  css  js  c++  java
  • 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){})。

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

  • 相关阅读:
    js学习之函数
    面试题
    渐进增强(progressive enhancement)、优雅降级(graceful degradation)
    倒计时
    css 平行四边形
    网址URL分解
    图片延时加载
    获取元素的宽高,左边距上边距
    电商平台放大镜效果
    js笔记
  • 原文地址:https://www.cnblogs.com/tincyho/p/6142891.html
Copyright © 2011-2022 走看看