1

如何使用 jQuery Ajax post 将元素数组发布到控制器操作。

这就是我正在尝试的方式,但我的控制器接收到一个空数组。

function dipatchAllocations() {
            // unSelected is an array of items of type int.
            if (unSelected.length == 0) {
                alert("Please select a line item to be dispatched.");
                return;
            }
            debugger;
            $.ajax({
                type: 'POST',
                url: '/Batch/SetToDispatch',
                data: '{ "allocationId[]" : "[' + unSelected + ']","batchId" : "' + @Model.Id + '" }',
                contentType: "application/json; charset=utf-8",
                traditional: true,
                success: updateView,
                error: errorInSubscribing
            });
        };

这是我的控制器

[HttpPost]
public ActionResult SetToDispatch(long[] allocationId,long batchId)
{   
  // Perform some action here
   return View("_ReadyToDispatchItems",model);
}

有人可以告诉我我缺少什么。

谢谢

4

3 回答 3

1

尝试这个:

var data = { allocationId : unSelected, batchId : @Model.Id };
$.ajax({
                type: 'POST',
                url: '/Batch/SetToDispatch',
                data: JSON.stringify(data),
                contentType: "application/json; charset=utf-8",
                traditional: true,
                success: updateView,
                error: errorInSubscribing
            });
于 2012-11-29T05:27:45.373 回答
0

您的 json 语法似乎已关闭,在 allocationId[] 之后不需要 [] 请参阅:http ://www.w3schools.com/json/json_syntax.asp 以了解数组的语法

于 2012-11-29T01:28:27.027 回答
0

您可以简单地将数据作为查询字符串提供给控制器,它将起作用

 $.ajax({
            type: 'POST',
            url: '/Batch/SetToDispatch/' + unSelected + ',' + batchId
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            traditional: true,
            success: updateView,
            error: errorInSubscribing
        });

它的逗号分隔您可以将其拆分到控制器中并使用它。希望能帮助到你

于 2012-11-29T05:10:29.063 回答