• 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){})。

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

  • 相关阅读:
    BETA冲刺(6/7)
    BETA冲刺(5/7)
    BETA冲刺(4/7)
    BETA冲刺(3/7)
    BETA冲刺(2/7)
    福大软工 · 第十次作业
    BETA冲刺(1/7)
    第08组 Beta版本演示
    第08组 Beta冲刺(4/4)
    第08组 Beta冲刺(3/4)
  • 原文地址:https://www.cnblogs.com/tincyho/p/6142891.html
Copyright © 2020-2023  润新知