我试图将两个表单数据和整个表一起序列化。两种形式的数据都可以正常工作,但是我无法序列化整个表记录。我附上了代码,下面我已经尝试过了。

谁能帮助我解决问题?

表格1

<form class="form-horizontal" id="frmproduct">
  <div>
    <label>Total</label>
    <input type="text" class="form-control" id="totalcal" name="totalcal">
  </div>
  <div>
    <label>Subtotal</label>
    <input type="text" class="form-control" id="subtotal" name="subtotal">
  </div>
</form>


表格2

<form class="form-horizontal" id="frmvendor">
  <div>
    <label>vendor</label>
    <input type="text" class="form-control" id="vendor" name="vendor">
  </div>
  <div>
    <label>vendorn</label>
    <input type="text" class="form-control" id="vendorn" name="vendorn">
  </div>
</form>


这是什么错误? _data = $('#frmproduct,#frmvendor,table_data').serialize();



var table_data = [];
$('table tbody tr').each(function(row, tr) {
  var sub = {
    'productcode': $(tr).find('td:eq(0)').text(),
    'productname': $(tr).find('td:eq(1)').text(),
    'price': $(tr).find('td:eq(2)').text(),
    'qty': $(tr).find('td:eq(3)').text(),
    'total': $(tr).find('td:eq(4)').text(),

  };
  table_data.push(sub);
});
//  + "&table_data=" + table_data
_data = $('#frmproduct,#frmvendor,table_data').serialize();

var _method;
console.log(_data);
$.ajax({
  type: "POST",
  url: "save.php",
  dataType: "JSON",
  data: {
    data: _data
  },
  success: function(data) {}
});

最佳答案

您无法按预期方式序列化数据数组。

$('#frmproduct,#frmvendor,table_data')将搜索ID为frmproductfrmvendor的HTML元素以及名为table_data的HTML元素,但不会神奇地包含您创建的名为table_data的JavaScript变量。

此外,.serialize()仅用于序列化表单数据。



对于可能的解决方案,请查看jQuery.param()并将其附加到_data

但是,另一个问题是您的table_data是一个复杂的数组而不是一个简单的对象。您可以尝试以下方法:

_data = $('#frmproduct,#frmvendor').serialize();
_data += '&' + $.param( table_data );


但我不确定您能否获得理想的结果。您可能必须重组table_data

关于javascript - 如何序列化两个表格和整个表格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51406726/

10-11 22:15
查看更多