如何使用ASP.NET MVC中的jQuery ajax方法将数据列表发送到Controller Action方法?

时间:2014-12-11 12:06:44

标签: jquery asp.net-mvc asp.net-ajax

这是我的Action Mehtod

public JsonResult GetById(IEnumerable<Guid> idList)
    {

        //.....
    }

我的JavaScript。我正在使用 li 元素的id属性

创建一个字符串数组
var idArr = [];
        var list = $("#ulApplications li");
        $.each(list, function () {  idArr.push($(this).attr("id")) });          


        $.ajax(
            {
                type: "GET",
                url: "/rolemanagement/application/GetById/",
                contentType: false,
                datatype: "json",
                data: { 'idList': idArr },
                success:........

在我的Action方法中,我没有得到任何数据。我好像错过了什么。 感谢

3 个答案:

答案 0 :(得分:5)

将您的ajax更改为

$.ajax({
  type: "GET",
  url: "/rolemanagement/application/GetById", // should use '@Url.Action(..)'
  dataType: 'json',
  contentType: "application/json; charset=utf-8",
  data: JSON.stringify({ idList: idArr }), // stringify
  success: ....
})

答案 1 :(得分:0)

我尝试了以下代码似乎工作正常,

$.ajax({
    type: "GET",
    url: "@Url.Action("GetById", new { area = "rolemanagement", controller = "application"})",
    data: { idList: [{ a: 'a' }, { a: 'b' }] },
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (data) { console.log(data); },
    error: function () { throw new Error("Error occurred."); }
});

已经由@stephen给出了甚至stringify甚至不需要发送数据。

答案 2 :(得分:0)

搜索stackoverflow和其他博客后。我找到了一个适合我的解决方案,虽然上面给出的答案非常正确,但它们对我没有用。这是我的答案

var IdList = {idList:idArr}

        $.ajax(
            {
                type: "GET",
                url: "/rolemanagement/application/GetById/",
                contentType: false,
                datatype: "json",
                data: IdList,
                traditional: true,
                success:
                    function (data) {
                        alert(data);
                    },