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 回答