標籤:字串問題 for 遍曆 運行 data var uid 使用 tail
今天在做練習項目的時候,使用$.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字串問題