success: function (data) { // request 成功取得回應後執行
let list_html = '';
$.each(data, function (index, item) {
console.log(item.item_id);
console.log(item.star);
list_html = `<li data-id="${item.item_id}" data-star="${item.star}" data-sort="${item.sort}">
<div class="item_flex">
<div class="left_block">
<div class="btn_flex">
<button type="button" class="btn_up">往上</button>
<button type="button" class="btn_down">往下</button>
</div>
</div>
<div class="middle_block">
<div class="star_block">
<span class="star" data-star="1"><i class="fas fa-star"></i></span>
<span class="star" data-star="2"><i class="fas fa-star"></i></span>
<span class="star" data-star="3"><i class="fas fa-star"></i></span>
<span class="star" data-star="4"><i class="fas fa-star"></i></span>
<span class="star" data-star="5"><i class="fas fa-star"></i></span>
</div>
<p class="para">${item.name}</p>
<input type="text" class="task_name_update -none" placeholder="更新待辦事項…" value="${item.name}">
</div>
<div class="right_block">
<div class="btn_flex">
<button type="button" class="btn_update">更新</button>
<button type="button" class="btn_delete">移除</button>
</div>
</div>
</div>
</li>`
});
$("ul.task_list").html(list_html);
},
AJAX 從伺服器取得JSON陣列 串接在HTML裡 想知道為什麼我的each迴圈只會抓索引值為1的json陣列塞進去??
這是老師的範例 我還是看不出差別在哪裡
求解
success: function(data){ // request 成功取得回應後執行
console.log(data);
let list_html = '';
$.each(data, function(index, item){
list_html += '<li data-id="' + item.item_id + '" data-star="' + item.star + '" data-sort="' + item.sort + '">';
list_html += '<div class="item_flex">';
list_html += '<div class="left_block">';
list_html += '<div class="btn_flex">';
list_html += '<button type="button" class="btn_up">往上</button>';
list_html += '<button type="button" class="btn_down">往下</button>';
list_html += '</div>';
list_html += '</div>';
list_html += '<div class="middle_block">';
list_html += '<div class="star_block">';
list_html += '<span class="star' + (item.star >= 1 ? " -on" : "") + '" data-star="1"><i class="fas fa-star"></i></span>';
list_html += '<span class="star' + (item.star >= 2 ? " -on" : "") + '" data-star="2"><i class="fas fa-star"></i></span>';
list_html += '<span class="star' + (item.star >= 3 ? " -on" : "") + '" data-star="3"><i class="fas fa-star"></i></span>';
list_html += '<span class="star' + (item.star >= 4 ? " -on" : "") + '" data-star="4"><i class="fas fa-star"></i></span>';
list_html += '<span class="star' + (item.star >= 5 ? " -on" : "") + '" data-star="5"><i class="fas fa-star"></i></span>';
list_html += '</div>';
list_html += '<p class="para">' + item.name + '</p>';
list_html += '<input type="text" class="task_name_update -none" placeholder="更新待辦事項…" value="' + item.name + '">';
list_html += '</div>';
list_html += '<div class="right_block">';
list_html += '<div class="btn_flex">';
list_html += '<button type="button" class="btn_update">更新</button>';
list_html += '<button type="button" class="btn_delete">移除</button>';
list_html += '</div>';
list_html += '</div>';
list_html += '</div>';
list_html += '</li>';
});
$("ul.task_list").html(list_html);
},
[
{
"item_id": 899,
"name": "一二三",
"star": 0,
"sort": 1
},
{
"item_id": 118,
"name": "四五六",
"star": 0,
"sort": 1
}
]
這是json取得的內容 為一個陣列
老師的範例執行出來怎麼樣?
你先用F12看一下你輸出的 console 資料格式是什麼。
正常來說你因該會看到的是如下
+ data(6)
類似物件格式的資料畫面。還可以展開的
而不是
[
{"item_id": 899,"name": "一二三","star": 0,"sort": 1
},
{"item_id": 118,"name": "四五六","star": 0,"sort": 1}
]
這樣的東西
如果你看到的是後者。
理論上你也會獲得錯誤才對。
如果是前者。可以先在其console下看看,你獲得的陣列數有多少。
如我上面是6。那就是有6個。
最後,可以先不要放上 list_html += 那些程式碼。
先學會查看獲得的資料是什麼。
DEBUG模式會告訴你很多。
不要一直用自已的思維去覺得怎麼怎麼。像鬼打牆似的。
你也可以PO出你的console看到的畫面為何。會有利於幫你查找問題的。
不要用認為自已的DATA正確沒事。
因為像如下的東西
data = '[
{"item_id": 899,"name": "一二三","star": 0,"sort": 1
},
{"item_id": 118,"name": "四五六","star": 0,"sort": 1}
]';
與
data = [
{"item_id": 899,"name": "一二三","star": 0,"sort": 1
},
{"item_id": 118,"name": "四五六","star": 0,"sort": 1}
]
這兩者是不一樣的東西。上面一個是文字。下面的才是陣列格式。