0
我有一個函數執行通過ajax請求返回的數據集的迭代,該請求依次遍歷數據鍵數組,以便它僅從JSON中返回它們的鍵。僅在對象的最後一次迭代中發生的動作
對於dataKey的每次迭代,我還遍歷一個dataLink對象,該對象測試dataLink對象的當前迭代的索引是否等於dataKey的值,然後添加到數據數組(如果有數據鏈接和沒有,如果沒有)。
唯一的問題是它只對dataKeys的最後一次迭代執行。
的代碼如下:
... jQuery ajax request ...
success: function(dataset) {
var dataR = []
for(var k in dataset){
d = dataset[k];
data = [];
for(var i in dataKeys) {
if (dataLink.length != 0) {
for (var j in dataLink) {
if (j == dataKeys[i]) {
if(dataLink[j][1] != null) {
data[i] = [d[dataKeys[i]], dataLink[j][0], d[dataLink[j][1]]];
}else{
data[i] = [d[dataKeys[i]], dataLink[j][0]];
}
} else {
data[i] = d[dataKeys[i]];
}
}
}else{
data[i] = d[dataKeys[i]];
}
}
dataR[k] = $(getTableRow(data));
}
dataRows = dataR;
}
}
);
...
所以,如果我將它傳遞 'dataKeys' 的陣列:
var dataKeys =
[
'name',
'prize_pool',
'max_users',
'published',
'start_date',
'registration_open_date',
'registration_close_date',
];
和數據鏈的一個目的:
var dataLink = {
'name': ['http://example.dev', 'id'],
'prize_pool': ['http://dev.dev'],
'published': ['http://this.dev'],
};
它僅將鏈接添加到dataLink對象的最後一次迭代中。
這裏也是我的代碼生成HTML jQuery對象中去的:
dataR[k] = $(getTableRow(data));
getTableRow()...
function getTableRow(data){
row = "<tr>";
for (i in data) {
if(Array.isArray(data[i])){
if(data[i][2] != null) {
row += "<td><a href='" + data[i][1] + "/" + data[i][2] + "'>" + data[i][0] + "</a></td>";
}else{
row += "<td><a href='" + data[i][1] + "'>" + data[i][0] + "</a></td>";
}
}else{
row += "<td>" + data[i] + "</td>";
}
}
row += "</tr>";
return row;
}
使用上面我結果的代碼是這樣(其中橙色鏈接):
但我期待'名稱','獎池'和'發佈'行被鏈接。
編輯:
對於參考JSON:
[
{
"id":1,
"name":"one",
"games_id":1,
"platforms_id":"1",
"max_users":100,
"registered_users":0,
"prize_pool":1000,
"entry_fee":10,
"published":0,
"registration_open_date":"0000-00-00 00:00:00",
"registration_close_date":"0000-00-00 00:00:00",
"start_date":"0000-00-00 00:00:00",
"created_at":"2015-04-28 20:35:23",
"updated_at":"2015-04-28 20:35:23"
},
{
"id":2,
"name":"Two",
"games_id":1,
"platforms_id":"3",
"max_users":1000,
"registered_users":0,
"prize_pool":10000,
"entry_fee":100,
"published":0,
"registration_open_date":"0000-00-00 00:00:00",
"registration_close_date":"0000-00-00 00:00:00",
"start_date":"0000-00-00 00:00:00",
"created_at":"2015-04-28 20:37:16",
"updated_at":"2015-04-28 20:37:16"
},
{
"id":3,
"name":"The Final Countdown",
"games_id":2,
"platforms_id":"2",
"max_users":5,
"registered_users":0,
"prize_pool":99999,
"entry_fee":50,
"published":0,
"registration_open_date":"0000-00-00 00:00:00",
"registration_close_date":"0000-00-00 00:00:00",
"start_date":"0000-00-00 00:00:00",
"created_at":"2015-04-30 17:54:15",
"updated_at":"2015-04-30 17:54:15"
},
{
"id":4,
"name":"GoogleTourn",
"games_id":2,
"platforms_id":"2",
"max_users":40,
"registered_users":0,
"prize_pool":4,
"entry_fee":0.05,
"published":0,
"registration_open_date":"0000-00-00 00:00:00",
"registration_close_date":"0000-00-00 00:00:00",
"start_date":"0000-00-00 00:00:00",
"created_at":"2015-04-30 00:00:00",
"updated_at":"2015-04-30 00:00:00"
}
]