使用AJAX不能POST多个值

时间:2017-11-15 20:34:27

标签: javascript c# jquery ajax asp.net-mvc

我坚持一件事。我有一个2格内复选框。当我选中该复选框时,我想POST那些行数据值,如数组或列表。实际上,当我发送一个列表项时,它的发布没有错误,但当我收到多个项目时,它无法发布值。

我的网格示例 Example of my grid

这里是我的ajax请求以及如何选择行值函数

 var grid = $("#InvoceGrid").data('kendoGrid');
var sel = $("input:checked", grid.tbody).closest("tr");
var items = [];
$.each(sel, function (idx, row) {
    var item = grid.dataItem(row);
    items.push(item);
});

var grid1 = $("#DeliveryGrid").data('kendoGrid');
var sel1 = $("input:checked", grid1.tbody).closest("tr");
var items1 = [];
$.each(sel1, function (idx, row) {
    var item1 = grid1.dataItem(row);
    items1.push(item1);
});

$.ajax({
    url: '../HeadOffice/CreateInvoice',
    type: 'POST',
    data: JSON.stringify({ 'items': items, 'items1': items1, 'refnum': refnum }),
    contentType: 'application/json',
    traditional: true,
    success: function (msg) {
        if (msg == "0") {
            $("#lblMessageInvoice").text("Invoices have been created.")
            var del = $("#InvoiceOKWindow").data("kendoWindow");
            del.center().open();
            var del1 = $("#InvoiceDetail").data("kendoWindow");
            del1.center().close();
            $("#grdDlvInv").data('kendoGrid').dataSource.read();
        }
        else {
            $("#lblMessageInvoice").text("Problem occured. Please try again later.")
            var del = $("#InvoiceOKWindow").data("kendoWindow");
            del.center().open();
            return false;
        }
    }
});

这是我的C#部分

[HttpPost]
    public string CreateInvoice(List<Pm_I_GecisTo_Result> items, List<Pm_I_GecisFrom_Result> items1, string refnum)
    {
        try
        {
            if (items != null && items1 != null)
            {
                //do Something
            }
            else
            {
                Log.append("Items not selected", 50);
                return "-1";
            }


        }
        catch (Exception ex)
        {
            Log.append("Exception in Create Invoice action of HeadOfficeController " + ex.ToString(), 50);
            return "-1";
        }
    }

但是,当我只发送一行时,它可以工作,但当我尝试发送多个值时,它会发布null并创建问题

我该如何解决这个问题?你有什么想法吗?

修改

我忘了说,但是这种方式适用于localy,但是当我更新服务器时工作不正常。

1 个答案:

答案 0 :(得分:0)

     $.ajax({
                url: '../HeadOffice/CreateInvoice',
                type: 'POST',
                async: false,
                data: { items: items, items1: items1 }

                success: function (msg) {
                   //add codes
                },
                error: function () {
                    location.reload();
                }

            });

尝试通过此方法调用控制器:)