Передать сериализованную форму с другими параметрами данных - PullRequest
0 голосов
/ 07 мая 2019

У меня есть функция 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 голосов
/ 07 мая 2019

Сначала вам нужно преобразовать ваш объект в запрос url param:

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
})
0 голосов
/ 08 мая 2019

Jquery serialize() функция эффективно превращает значения формы в допустимую строку запроса.Используйте $.param(object) для отправки других параметров в некоторую переменную объекта

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

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

Подробнее http://api.jquery.com/jQuery.param/

0 голосов
/ 07 мая 2019

Попробуйте это


 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()
                    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...