传递带有其他数据参数的序列化表格

时间:2019-05-07 12:02:19

标签: javascript php html codeigniter

我有一个jQuery ajax函数,并希望将整个表单提交为发布数据,并且还将传递一些数据参数。

var serial = $("#formProjectBilling").serialize();

$.ajax({
    url: base_url+"sales/Sales_invoice_form/saveSalesInvoice",
    type: 'post',
    data: serial + { 
        'orderItems': orderItems, 
        'orderTotal': totalamt, 
        'freight': freight,
        'gen_disc':gen_disc,
        'otp': otp,
        'notes': $("#notes").val(),
        'idno': $("#idno").val(),
        'acctno': $("#hdnAcctNo").val(),
        'itemlocid': $("#location_id").val(),
        'shipping_id': $("#shipping_id").val(),
        'sales_date': $("#sales_date").val(),
        'discamt': $("#discount").text(),
        'gendisctype': $("#gen_disc_type").val()
    },

它只传输序列化的表格,而不传输参数中的其他数据。

3 个答案:

答案 0 :(得分:0)

尝试一下


 var serial = $("#formProjectBilling").serializeArray();

                $.ajax({
                    url: base_url+"sales/Sales_invoice_form/saveSalesInvoice",
                    type: 'post',
                    data: {...serial,...{ 
                        'orderItems': orderItems, 
                        'orderTotal': totalamt, 
                        'freight': freight,
                        'gen_disc':gen_disc,
                        'otp': otp,
                        'notes': $("#notes").val(),
                        'idno': $("#idno").val(),
                        'acctno': $("#hdnAcctNo").val(),
                        'itemlocid': $("#location_id").val(),
                        'shipping_id': $("#shipping_id").val(),
                        'sales_date': $("#sales_date").val(),
                        'discamt': $("#discount").text(),
                        'gendisctype': $("#gen_disc_type").val()
                    },

答案 1 :(得分:0)

首先,您需要将对象转换为url参数查询:

var str = "";
for (var key in yourData) {
    if (str != "") {
        str += "&";
    }
    str += key + "=" + yourData[key];
}

然后在传递数据的行中将其放入ajax中,只需使用转换后的url:

...
data: serial + '&' + str;
...

完整代码:

var serial = $("#formProjectBilling").serialize();
// your data
var data = {
  'orderItems': orderItems,
  'orderTotal': totalamt,
  'freight': freight,
  'gen_disc': gen_disc,
  'otp': otp,
  'notes': $("#notes").val(),
  'idno': $("#idno").val(),
  'acctno': $("#hdnAcctNo").val(),
  'itemlocid': $("#location_id").val(),
  'shipping_id': $("#shipping_id").val(),
  'sales_date': $("#sales_date").val(),
  'discamt': $("#discount").text(),
  'gendisctype': $("#gen_disc_type").val()
}
// conversion object to url params
var str = "";
for (var key in data) {
  if (str != "") {
    str += "&";
  }
  str += key + "=" + data[key];
}

$.ajax({
  url: base_url + "sales/Sales_invoice_form/saveSalesInvoice",
  type: 'post',
  data: serial + '&' + str
})

答案 2 :(得分:0)

jQuery serialize()函数有效地将表单值转换为有效的查询字符串。使用$.param(object)在某个对象变量中发送其他参数

var values = [
  { 'orderItems': orderItems },
  { 'orderTotal': orderTotal },
  { 'freight': freight }
  { ... }
]

var data = form.serialize() + '&' + $.param(values);

了解更多http://api.jquery.com/jQuery.param/