这是正在运行的方法,它解析所有HTML表行,并将它们插入到数组中,因此它变成了一个行数组,但只有行值,没有键:
function tableToJson(table){
var AoA = $(table+' > tbody > tr').map(function(){
return [
$('td',this).map(function(){
return $(this).text();
}).get()
];
}).get();
return JSON.stringify(AoA);
}
输出:
[
['x','1'],
['y','2'],
['z','3']
]
我可以更改什么使它返回一个字典数组(带键和值)?
如:
[
{'address': 'x','number': '1'},
{'address': 'y','number': '2'},
{'address': 'z','number': '3'}
]
我已经尝试更换线路:
return $(this).text();
对于:return $(this).attr('name') => $(this).text();
但它没有用。
答案 0 :(得分:1)
return [
$('td',this).map(function(){
return $(this).text();
}).get()
];
这会生成此格式['x','1']
您可以更改它以创建结果对象,并为每个td
:
$(this).attr('name')
$(this).text()
result[key] = value
解决方案:
var result = {}
$('td',this).each(function(){
var key = $(this).attr('name');
var value = $(this).text();
result[key] = value;
}).get()
return result;
答案 1 :(得分:1)
我认为这就是你要找的东西:
function tableToJson(table){
var r = [];
$(table+' > tbody > tr').each(function(){
var e = $(this);
r.push({address:e.attr('name'), number:e.text()});
});
return r;
}
当然,上面创建了一个对象数组。您可以看到他们的名称和值,如:
var tblRws = tableToJson('#tableId');
$.each(tblRws, function(i, v){
console.log('Row:'+i+'; Address:'+v.address+'; Number:'+v.number+';');
});
我不确定你为什么要JSON.strigify()
结果。如果是AJAX,则可以使用Object作为data
参数。此外,您可能希望将dataType
设置为您希望从服务器返回的data
类型。