繁体   English   中英

如何将列表从 ajax 传递到 controller

[英]How to pass list from ajax to controller

我有一个像这样的 controller ..

public ActionResult Report(List<string> invoiceIds)

我有一个像这样的 ajax 电话......

function generateAccountsPayableReports() {
    var ms = $("#msInvoicesAPV").data("kendoMultiSelect");
    var invoices = ms.dataItems();
    var invoiceIds = [];

    invoices.forEach(function (invoice) {
        invoiceIds.push(invoice.Id);
    });

    //invoiceIds = JSON.stringify(invoiceIds); 
    console.log("InvoiceIds: ", invoiceIds);

    $.ajax({
        type: "GET",
        url: "/APV/Report",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(invoiceIds),
        success: function (result) {
            if (result) {
                console.log("result: ", result);
            }
        },
        failure: function (result) {
            console.error("result: ", result);
        },
        error: function (result) {
            console.error("result: ", result);
        }
    });
}

我已经尝试了我能想到的一切:

  • 数据:{'invoiceIds':JSON.stringify(invoiceIds)}
  • 数据:(发票 ID)
  • 数据:{'invoiceIds': invoiceIds}
  • 数据:JSON.stringify(invoiceIds)
  • 数据:invoiceIds
  • 数据:JSON.stringify({'invoiceIds': invoiceIds})

当我尝试这个时,它通过了 controller 但仅在单个元素上..

{'invoiceIds': JSON.stringify(invoiceIds)}

它仅在一个元素上传递

似乎没有任何效果......我做错了什么?

顺便说一下 javascript 中的数组是 guid

我如何正确通过它?

您将类型用作“GET”而不是“POST”,使用“POST”并且不更改任何内容,通常它会像这样工作它似乎在您的 LIST 中收到一个字符串

而不是List<string>在方法 controller 中声明一个字符串数组,所以它应该看起来像这样Report(string[] invoiceIds)和 ajax 调用只是将数组绑定到data:像这样的data: invoiceIds

你可以这样试试

var ajaxData = { invoiceIds: invoiceIds };

比通过 ajax 以这种方式传递数据

data: ajaxData

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM