0

dataTable に次のデータがあり、Jquery Ajax で投稿したいと考えています。使用してASP.Net WebMethod

|SupplierId| ProductId | Quantity|Price/Unit|
--------------------------------------------
| 1        |   1       |  10    | 50       |
| 1        |   2       |  15    | 130      |
| 1        |   3       |  5     | 150      |
| 2        |   2       |  5     | 150      |
--------------------------------------------

シングルクリックでデータとして複数の行をjquery Ajaxに渡す方法。私は次のようにしていますが、最後の行だけを挿入します。

      var proParams={};
      var param = {};
      var rows = $("#QuotationDataTable").dataTable().fnGetNodes();
      for (var i = 0; i < rows.length; i++) {
      var aData = $("#QuotationDataTable").dataTable().fnGetData(i);
      param.SupplierId = aData[0];
      param.ProductId = aData[1];
      param.Quantity = aData[2];
      param.UnitPrice = aData[3];
   // Below both lines work similar...
      proParams = {'proParam': param }
   // proParams += {'proParam': param };
       } 

        $.ajax({
                        type: 'POST',
                        data: JSON.stringify(proParams),
                        contentType: 'application/json; charset=utf-8',
                        dataType: 'json',
                        url: '/Forms/Quotation.aspx/SaveQuotation',
                        success: function (data) {
                            alert('Operation Performed');
                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                           alert('Operation Failed');
                        }
                    });
4

1 に答える 1

1

あなたの問題は、proParams反復ごとにオーバーライドしていることです。それが最後のアイテムを保持する理由です。これで試してください

var proParams=[]; // <-- declare as array
var param = null;
var rows = $("#QuotationDataTable").dataTable().fnGetNodes();
for (var i = 0; i < rows.length; i++) {
    var aData = $("#QuotationDataTable").dataTable().fnGetData(i);
    param = new Object(); // <-- creates a new object
    param.SupplierId = aData[0];
    param.ProductId = aData[1];
    param.Quantity = aData[2];
    param.UnitPrice = aData[3];
    proParams.push({'proParam': param }); // <-- push a new element into array
} 
于 2013-06-12T12:13:50.343 に答える