我有一个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()
},
它只传输序列化的表格,而不传输参数中的其他数据。
答案 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);