Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有相同名称的表单输入+;序列化数组()_Javascript_Jquery_Arrays_Json - Fatal编程技术网

Javascript 具有相同名称的表单输入+;序列化数组()

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

有一个由脚本创建的输入表,其中可能包含任意数量的输入行,因此有许多具有相同名称的输入元素。问题是serializeArray()没有分割这些输入行,因此我不可能在PHP端处理这些行

<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]
这种方法的替代方法是使用jQuery
map()
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);
})