Javascript 具有相同名称的表单输入+;序列化数组()
有一个由脚本创建的输入表,其中可能包含任意数量的输入行,因此有许多具有相同名称的输入元素。问题是serializeArray()没有分割这些输入行,因此我不可能在PHP端处理这些行Javascript 具有相同名称的表单输入+;序列化数组(),javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,有一个由脚本创建的输入表,其中可能包含任意数量的输入行,因此有许多具有相同名称的输入元素。问题是serializeArray()没有分割这些输入行,因此我不可能在PHP端处理这些行 <form> <table> Here might be any amount of tr like these <tr> <td><input type='text' name='username' placeholder='us
<form>
<table>
Here might be any amount of tr like these
<tr>
<td><input type='text' name='username' placeholder='username'/></td>
<td><input type='text' name='about' placeholder='about'/></td>
<td><input type='text' name='website' placeholder='website'/></td>
</tr>
<tr>
<td><input type='text' name='username' placeholder='username'/></td>
<td><input type='text' name='about' placeholder='about'/></td>
<td><input type='text' name='website' placeholder='website'/></td>
</tr>
</table>
<input type='button' id='submit' value='Submit' />
</form>
<p>
JSON:
</p>
一种简单的方法是在html中使用数组名,如
name='username[]”
而不是serializeArray()
使用serialize()
然后在php中,$\u POST['username']
,$\u POST['about']
和$\u POST['website']
您可以在其中一个数组中循环,并使用索引从另外两个数组中获取相同的行值
JS将类似于:
$('#submit').on('click',function(){
var data = $('form').serialize();
$.post('someFile.php', data).then(res => console.log(res));
})
将结果分成若干块,然后将其重新分组成行
$('#submit').on('click',function(){
var data = $('form').serializeArray();
processedData = [];
var i,j,w,temparray,chunk = 3;
for (i=0,j=data.length; i<j; i+=chunk) {
form = data.slice(i,i+chunk);
var obj = {};
for(w=0; w < chunk; w++) {
var name = form[w].name;
var value = form[w].value;
obj[name] = value;
}
processedData.push(obj);
}
var json = JSON.stringify(processedData);
$('p').append(json);
})
$('#提交')。在('click',function()上{
var data=$('form').serializeArray();
processedData=[];
变量i,j,w,temparray,chunk=3;
对于(i=0,j=data.length;我想为每行创建一个对象吗?我只想分别与每行交互,比如:谢谢!”。但我正在向PHP发送JSON,并寻找一种类似的方法:好吧……由您决定,但只需使用$\u POST['username'][0]
这种方法的替代方法是使用jQuerymap()
s上的
,并在每行上创建自己的对象
$('#submit').on('click',function(){
var data = $('form').serializeArray();
processedData = [];
var i,j,w,temparray,chunk = 3;
for (i=0,j=data.length; i<j; i+=chunk) {
form = data.slice(i,i+chunk);
var obj = {};
for(w=0; w < chunk; w++) {
var name = form[w].name;
var value = form[w].value;
obj[name] = value;
}
processedData.push(obj);
}
var json = JSON.stringify(processedData);
$('p').append(json);
})