简体   繁体   English

如何将列表从 ajax 传递到 controller

[英]How to pass list from ajax to controller

I have a controller like so..我有一个像这样的 controller ..

public ActionResult Report(List<string> invoiceIds)

and I have an ajax call like so...我有一个像这样的 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);
        }
    });
}

I have tried everything I could think of:我已经尝试了我能想到的一切:

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

when I tried this, it passed in the controller but on a single element only..当我尝试这个时,它通过了 controller 但仅在单个元素上..

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

它仅在一个元素上传递

nothing seems to work... what am I doing wrong?似乎没有任何效果......我做错了什么?

by the way the array in javascript are guid顺便说一下 javascript 中的数组是 guid

how do I pass it properly?我如何正确通过它?

you use type as "GET" and not "POST", use "POST" and don't change anything, normally it will work like that It seems it receive ONE string in your LIST您将类型用作“GET”而不是“POST”,使用“POST”并且不更改任何内容,通常它会像这样工作它似乎在您的 LIST 中收到一个字符串

Instead of List<string> declare an array of string in the method controller so it should look like this Report(string[] invoiceIds) and to the ajax call just bind array to data: like this data: invoiceIds而不是List<string>在方法 controller 中声明一个字符串数组,所以它应该看起来像这样Report(string[] invoiceIds)和 ajax 调用只是将数组绑定到data:像这样的data: invoiceIds

You can try like this way你可以这样试试

var ajaxData = { invoiceIds: invoiceIds };

than passing the data like this way through ajax比通过 ajax 以这种方式传递数据

data: ajaxData

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

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