5

我无法在 mvc 3 中发布期间获得收藏价值。它返回 null。

$.post("/Work/Post", { vm: $('#myForm').serializeArray(), 'collection': ['a', 'b', 'c'] });

//Or


var data = $('#myForm').serializeArray();
data.push({ name: 'collection', value: ['a', 'b', 'c'] });
$.post("/Work/Post", data);

//Or

var data = $('#myForm').serializeArray();
data.push({ name: 'collection[]', value: ['a', 'b', 'c'] });
$.post("/Work/Post", data);
4

4 回答 4

8

传递数组时我遇到了类似的问题。

而不是使用$.postuse$.ajax并设置traditional选项 = true...

$.ajax({
    type: "POST",
    url: "Work/",
    traditional: true,
    data: { collection: ['a','b','c'] }
});

选项traditional: true很重要

于 2012-08-08T15:48:08.720 回答
3

几个月来,我用常规的 .ajax() 调用将我的头撞在墙上。

我最终发现你需要traditional: true在 $.ajax() 的参数列表中进行设置。(请参阅此处的“传统”标题:http: //api.jquery.com/jQuery.ajax/

由于没有 $.post() 的参数列表,我不确定您是否可以使用 $.post() 执行此操作。但是使用 $.ajax() 的代码并不多。

于 2012-08-08T15:48:33.360 回答
2
                var model = $('#myForm').serializeArray();

                $.map(['a', 'b', 'c'], function (val, i) {
                    return model.push({ "name": "collection[" + i + "]", "value": val });
                });

                $.post("/Work/Post", model);
                //OR
                $.post("/Work/Post", model, function (data) {
                    //After Success
                });
于 2012-08-09T07:36:48.780 回答
-1

以下对我有用。您可以如下使用serializeArray() serializeJSON() 并将其设置为数据元素。观察formData变量。

var formData = $('#inputForm').serializeJSON();
$.ajax({
    type : "POST",
    url: server_side_url,
    cache:false,
    traditional: true,
    data: formData,
    dataType: "json",
    success: function(data, textStatus, jqXHR){
        console.log("successfully processed.");
    },
    error: function(xhr,status,error){
        console.log("error occurred.");
    }
}); 
于 2014-04-17T18:54:29.607 回答