2012-08-08 50 views
4

我無法在mvc 3中發佈收集值。 它返回null。帶序列化和數據數組的jQuery post()

$.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

嘗試使用阿賈克斯,而不是直接。員額,看看你得到的東西 – mgaughan 2012-08-08 15:34:29

+0

使用Firebug或類似工具,看到正在發送的數據請求的一部分,並檢查它的格式相匹配你希望/需要它在服務器上。 – 2012-08-08 15:36:27

回答

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 
       }); 
+0

更多人應該知道jquery ajax數據模型的名稱值對使用情況。 – Dummy 2015-11-05 05:19:03

7

我傳遞數組時有類似的問題。

而不是使用$.post使用$.ajax並設置traditional選項= true的...

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

traditional: true選項是非常重要

3

我撞了我的頭靠在牆上這幾個月與常規阿賈克斯()調用。

我最終發現您需要在$ .ajax()的參數列表中設置traditional: true。 (請參閱這裏的「傳統」標題:http://api.jquery.com/jQuery.ajax/

由於$ .post()沒有參數列表,所以我不確定您可以使用$ .post()來做到這一點。但是使用$ .ajax()的代碼並不多。

-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."); 
    } 
});