単なる「データ」ではないJSONパケットがあります-それに関連付けられたメタデータがあります-しかし、それを参照できないようです...
これがどのように見えるかです(JSON)
{ "count":"4",
"companies": [
{ "id":"1", "company":"Acme", "address":"1234 street st.", "city":"New York", "state":"NY", "zip":"02123", "phone":"212-222-2222", "contact":"Billy Bob", "email":"bb@ny.com", "jobscurrent":"12", "jobsdone":"11" },
{ "id":"3", "company":"Acme", "address":"1234 street st.", "city":"New York", "state":"NY", "zip":"02123", "phone":"212-222-2222", "contact":"Billy Bob", "email":"bb@ny.com", "jobscurrent":"12", "jobsdone":"11" },
{ "id":"4", "company":"Acme", "address":"1234 street st.", "city":"New York", "state":"NY", "zip":"02123", "phone":"212-222-2222", "contact":"Billy Bob", "email":"bb@ny.com", "jobscurrent":"12", "jobsdone":"11" },
{ "id":"5", "company":"Acme", "address":"1234 street st.", "city":"New York", "state":"NY", "zip":"02123", "phone":"212-222-2222", "contact":"Billy Bob", "email":"bb@ny.com", "jobscurrent":"12", "jobsdone":"11" }
] }
これが私のjQueryの外観です...ネストされた「それぞれ」-最初のもの(私の理解です)は{count、companies}をループしており、内部にネストされているものはcustomers配列の各配列をループしています....
2番目のものは正常に動作しています(最初のものの中にネストしなくても正常に動作します-ただし、「n個のレコードを表示する」などの何かを返す必要があります-しかし、現在、「value.count」
items.push('<tr class=""><td colspan="11">' + value.count + '</td></tr>' );
「未定義」を返します
うーん!-そして、それが私の出力を2回与えていることに気づきました...これは予想されることです-外側のループの反復ごとに1回-2つの要素があるため
問題は、メタデータを一度参照するにはどうすればよいかということです...明らかに、そのためにEACHを使用するつもりはありません..
それを参照するために「data.count」だけを試しましたが、何も得られませんでした。そのため、JSON変数を抽出する「EACH」方法に行きました...
function loadTable() {
$.ajax({
type: 'POST',
url: 'company_list.php',
dataType: 'json',
success: function ( data ) {
var items = [];
var line = 1;
$.each( data, function ( key, value ) {
// meta data
items.push('<tr class=""><td colspan="11">' + value.count + '</td></tr>' );
// the real data
$.each( data.companies, function ( key, value ) {
var thisRowClass = 'odd';
if ( line % 2 ) {
thisRowClass = 'even';
}
items.push('<tr class="' + thisRowClass + '"><td>' + value.company +
'</td><td>' + value.address +
'</td><td>' + value.city +
'</td><td>' + value.state +
'</td><td>' + value.zip +
'</td><td>' + value.phone +
'</td><td>' + value.contact +
'</td><td>' + value.email +
'</td><td>' + value.jobscurrent +
'</td><td>' + value.jobsdone +
'</td><td> edit | delete ' +
'</td></tr>');
line++;
});
});
//$( '#message' ).html( '<p>Displaying' + value.count + '</p>' );
$( '#companies-list' ).append( items.join('') );
},
error: function () {
// there's an error
$( '#message' ).html( '<p>There was a problem on the server... </p>' );
}
});
}