我无法在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);
答案 0 :(得分:8)
传递数组时遇到了类似的问题。
而不是使用$.post
使用$.ajax
并设置traditional
选项= true
...
$.ajax({
type: "POST",
url: "Work/",
traditional: true,
data: { collection: ['a','b','c'] }
});
traditional: true
选项很重要
答案 1 :(得分:3)
我在常规的.ajax()电话中撞了几下这个墙。
我最终发现你需要在$ .ajax()的参数列表中设置traditional: true
。 (参见此处的“传统”标题:http://api.jquery.com/jQuery.ajax/)
由于$ .post()没有params列表,我不确定你能用$ .post()做到这一点。但使用$ .ajax()的代码并不多。
答案 2 :(得分: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
});
答案 3 :(得分:-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.");
}
});