Javascript 如何修改此方法以返回key=>;的数组;价值观

Javascript 如何修改此方法以返回key=>;的数组;价值观,javascript,jquery,Javascript,Jquery,这就是正在工作的方法,它解析所有HTML表行,并将它们插入一个数组中,因此它将变成一个行数组,但只包含行值,不包含键: function tableToJson(table){ var AoA = $(table+' > tbody > tr').map(function(){ return [ $('td',this).map(function(){ return $(this).text();

这就是正在工作的方法,它解析所有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()
用于:
返回$(this.attr('name')=>$(this.text()

但它不起作用

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;

我想这就是你想要的:

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的,则可以使用对象作为
data
参数。另外,您可能希望将
数据类型设置为希望从服务器返回的
数据类型。

这是用于ajax的,我正在尝试解析表中的信息以将其发布到PHP,我不知道这是否是一种好方法,但这是我认为最好的方法,我如何在数据类型上设置它?如果您使用
$.ajax({url:'url.php',data:tableToJson('#tableId'),dataType:'JSON',complete:function(results){/*在这里处理结果*/}})
或在
函数
参数之后,如
$.post('url.php',tabelToJson('#tableId'),函数(results){/*在完成时执行*/},'JSON')
。更改为
$.get()
如果使用
$\u GET
PHP服务器端。无法通过JSON以PHP格式key=>value发布它,对吗?您将JSON或序列化字符串作为
数据
参数发送到服务器。当发送响应时,PHP会处理它,然后将响应传递到
complete
函数的参数中。当然,该函数是异步执行,当
XMLHttpRequestObject.status==200&&XMLHttpRequestObject.readyState==4
时。如果要读取JSON响应,在PHP执行后,需要
echo JSON\u encode($assoc\u array\u此处)
。我不明白你的问题。希望这能有所帮助。我想用ajax将数组数组发布到PHP,但要使用关联数组,这样我就不必将ajax post数据格式化为PHP中的format key=>值。非常感谢你的帮助:)