試了很久還是試不出來
請問要怎麼取JSON的第二.3.4....筆資料
我指的是第二筆整個object的資料
各位高手前輩一定一看就知道 我既然都obj.lenth了
就是要for 迴圈印出來了
嘗試$.each(obj[1],function(key,value)沒辦法取到第二筆資料
請問我該怎麼取?
$(document).ready(function(){
var data1="";
data1 = '<?=$data ?>';
var obj = JSON.parse(data1);
alert(obj.length);
var data2="";
var tel="";
var number="";
$.each(obj,function(key,value){
data2 = value.username;
tel = value.telnumber;
.....
$('.result').html('<p>姓名:'+data2+'</p><p>電話:'+tel+'</p><p>編號:'+number+'</p><p>年齡:'+age+'</p><p>住址:'+address+'</p>');
首先,你要先了解一件事。陣列與物件的不同。
在javascript中,含索引值(這邊是指0~N)的KEY,才會算是陣列。
例:
array = ['A','B','C']
如有自帶KEY的值。一徑會視為物件
例
obj = {'A':'A','B':'B','C':'C'}
each只能處理陣列。無法處理物件。
一般陣列值要能跑 each 或 foreach的話。
需要先將其轉換成陣列
如使用 Object.values
例:
obj = {'A':'A','B':'B','C':'C'}
Object.values(obj).each(function(item){
console.log(item);
})
不過,使用 Object.values 只會將值取出來,KEY值就消失了。
如果需要連帶取得KEY值的話。則可以利用 Object.keys
取得KEY值後。再利用KEY值去取值的方式
例:
obj = {'A':'A','B':'B','C':'C'}
Object.keys(obj).each(function(key){
let item = obj[key];
console.log('key',key,'item',item);
})
當然,我不確定你是否是碰上了物件回圈的情況。
我只是猜測能遇上這件事。
一些人不了解的情況下。
很常發生這一類的事。
畢竟在javascript的特性,跟後端語言的EACH特性解讀會比較不一樣。
大多數的後端語言是能FOREACH物件的。
但javascript是不行的,只能特別處理。
PS:雖然,都是JSON。
{
"Content": [{
"GR_QTY": "0",
"HIT_RATIO": "0 %",
"HIT_DATE": "2099/12/31"
}, {
"GR_QTY": "0",
"HIT_RATIO": "0 %",
"HIT_DATE": "2099/12/31"
}]
}
var dataurl_2 = "http://localhost:49687/api/GetData";
var newdata;
$.ajax({
url: dataurl_2,
type: "GET",
async: false,
success: function (data) {
newdata = data;
}
});
aryData = newdata;
$.each(aryData.Content, function (idx, item) {
strHTML += '<tr>';
strHTML += '<td>' + item.GR_QTY + '</td>';
strHTML += '<td>' + item.HIT_RATIO + '</td>';
strHTML += '<td>' + item.HIT_DATE + '</td>';
strHTML += '</tr>';
});