【问题标题】:Post Multiple Records/Rows with Jquery Ajax?使用 Jquery Ajax 发布多条记录/行?
【发布时间】:2013-06-12 12:10:26
【问题描述】:

我在 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');
                        }
                    });

【问题讨论】:

    标签: asp.net jquery webmethod


    【解决方案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
    } 
    

    【讨论】:

    • 同样的问题,只添加了最后一条记录。
    • 在firebug中它添加第一行成功,但是当到达第二行时它用第二行覆盖了第一个对象数据,并且还添加了具有相同数据的新对象,当到达第三行时它用第 3 行覆盖数组的 2 个对象数据,并将第 3 个对象添加到数组中。
    • @Shahid Iqbal:没有必要在循环中声明,但确实需要初始化 param,这就是我所做的 :)
    猜你喜欢
    • 2014-08-20
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 2019-02-18
    • 2014-06-22
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多