Pasar un formulario de serialización y una matriz en ajax

programación


Hola

Estoy intentando pasar un formulario que contiene un bool y un DataTable que he convertido en una matriz según la documentación de Datatable.

 var aData = $('#dtPurchaseEnquiryLines').DataTable().rows().data().toArray();

  var formData = $("#PurchaseEnquiryDetails").serializeArray();


 $.ajax({
        type: "POST",
        url: "/PurchaseEnquiry/UpdatePEHeader",
        data: { oPE: jsonData, oLines: aData } 
})

Si lo paso usando serializeArray, el bool del formulario siempre se devuelve como falso.

Si configuro el conjunto como

var formData = $("#PurchaseEnquiryDetails").serialize();

el formulario pasa al controlador como nulo. Si elimino la entrada de la matriz de datos del ajax, from pasa al controlador bien con bool como verdadero.

Intenté crear un objeto para ambas entradas y publicarlo como stringify, pero luego la matriz de la tabla de datos es nula en el controlador, aunque el formulario se aprobó correctamente.

Tengo una solución funcional que es

                                        var aData = $('#dtPurchaseEnquiryLines').DataTable().rows().dat();

var formData = $("#PurchaseEnquiryDetails").serialize();


var jsonData = {};
       

$(formData).each(function (index, obj) {
          if (obj.name === "ReviewRequired1" && !jsonData.hasOwnProperty(obj.name)) {
        jsonData[obj.name] = obj.value; } 
else if (!jsonData.hasOwnProperty(obj.name)) {
  jsonData[obj.name] = obj.value; }
 });

 $.ajax({
     type: "POST",
     url: "/PurchaseEnquiry/UpdatePEHeader",
     data: { oPE: jsonData, oLines: aData } 
})   

Simplemente creo que parece una chapuza y no una buena resolución. ¿Alguien podría ayudar?

Lo que he probado:

var aData = $('#dtPurchaseEnquiryLines').DataTable().rows().dat();

var formData = $("#PurchaseEnquiryDetails").serialize();


 var jsonData = {};
       

     $(formData).each(function (index, obj) {
           if (obj.name === "ReviewRequired1" && !jsonData.hasOwnProperty(obj.name)) {
           jsonData[obj.name] = obj.value;
    } else if (!jsonData.hasOwnProperty(obj.name)) {
      jsonData[obj.name] = obj.value;
  }
});

$.ajax({
     type: "POST",
     url: "/PurchaseEnquiry/UpdatePEHeader",
      data: { oPE: jsonData, oLines: aData } 
})   

コメント

タイトルとURLをコピーしました