【问题标题】:Cannot POST more than one value with AJAX不能使用 AJAX POST 多个值
【发布时间】:2017-11-15 20:34:26
【问题描述】:

我坚持一件事。我在复选框中有一个 2 网格。当我选择该复选框时,我想发布该行数据值,如数组或列表。实际上,当我发送一个列表项时,它会正确发布,但是当我收到多个列表项时,它无法发布值。

我的网格示例

这里是我的 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 并产生问题

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

编辑

我忘了说,但是这种方式在本地工作,但是当我更新服务器时无法正常工作。

【问题讨论】:

  • 尝试删除繁体:true
  • 这是 WebAPI 吗?如果它是 WebAPI,您的 CreateInvoice 上不能有多个参数绑定只有 1,请使用 [FromBody] 属性。看一看:docs.microsoft.com/en-us/aspnet/web-api/overview/…
  • @12seconds 不,这不是 WebAPI,这是 MVC Web 应用程序
  • @johnny5 不工作:(
  • 你会遇到很多问题。相反,创建一个封装所有这些的单个模型并根据 including your lists 进行绑定。

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


【解决方案1】:
     $.ajax({
                url: '../HeadOffice/CreateInvoice',
                type: 'POST',
                async: false,
                data: { items: items, items1: items1 }

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

            });

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

【讨论】:

  • stringfy 怎么样?? @MAC
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
相关资源
最近更新 更多