【解決方法】Ajaxでシリアル化フォームと配列を渡す


こんにちは

Datatable のドキュメントに従って配列に変換したブール値と DataTable を含むフォームを渡そうとしています。

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

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


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

SerializeArray を使用して渡すと、フォームからのブール値は常に false として返されます。

セットを次のように設定すると

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

フォームはコントローラーに null として渡されます。 ajaxからデータテーブル配列入力を削除すると、fromはブール値をtrueとしてコントローラーに正常に渡します。

両方の入力のオブジェクトを構築し、これを stringify として投稿しようとしましたが、フォームは正しく渡されたにもかかわらず、データテーブル配列がコントローラー上で null になります。

私には実用的な解決策があります

                                        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 } 
})   

それは少しごまかしのようで、良い解決策ではないと思います。 誰か助けてくれませんか?

私が試したこと:

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をコピーしました