2015-09-26 65 views
0

我jQuery是如何在MVC控制器中使用JQuery AJAX發佈多個數組?

$(":checkbox").change(function() { 
     if(this.checked) { 
      var man_data = { 'man': [] }; 
      var size_data = { 'size': [] }; 
      var color_data = { 'color': [] }; 

      $('input:checked').each(function() 
      { 
       if(this.name == 'man') man_data['man'].push($(this).val()); 
       if(this.name == 'size') size_data['size'].push($(this).val()); 
       if(this.name == 'color') color_data['color'].push($(this).val()); 
      }); 
      var path = "/Home/Index"; 
      $.ajax({ 
       url: path, type: "POST", cache: "false", 
       dataType: "json", contentType: "application/json; charset=utf-8", 
       data: JSON.stringify(man_data), 
       traditional: true, 
       converters: {'text json': true} 
      }).success(function (responseText) { 
       $('#Grid').replaceWith(responseText); 
      }).error(function (responseText){ 
       swal("Error!", "Test 1", "error"); 
      }); 
      //swal("Error!", "Test 2", "error"); 
     } 
    }); 

如果我只發佈一個陣列data: JSON.stringify(man_data)它的偉大工程。 的問題是,我想後所有3個數組

  • man_data的內容
  • size_data
  • color_data

我想是這樣

data: JSON.stringify(man_data + size_data + color_data) 

但它不按預期工作:(

我應該如何修改上面的代碼?

我也嘗試過類似

data: {'man':JSON.stringify(man_data),'size':JSON.stringify(size_data)}, 

,但現在我得到的錯誤Invalid JSON primitive: man.

UPDATE

的數據在一個MVC控制器

public ActionResult Index(int[] man = null, int[] size = null, int[] color = null) 
{ 
} 
+0

你有沒有嘗試過像'man_data.concat(size_data,color_data)'這樣的東西? – Dan

+0

@丹我得到一個man_data.concat不是一個函數錯誤。 – OrElse

+0

man_data絕對是一個數組嗎?獲取不是函數錯誤會暗示它不是。哦,我明白了,這是因爲它們都被物體包裹着,這是有原因的嗎?我會將其轉化爲答案。 – Dan

回答

1

發送到結合我想要的數據使用Array.prototype.concat()

當你在對象中存儲你的數組時,你必須在連接它們之前訪問屬性來獲取數組。在這裏,我串接數組到一個新的數組:

[].concat(man_data.man, size_data.size, color_data.color); 

除非你增加更多的屬性,這些對象我會建議他們只是更改爲陣列規劃。

var man_data = []; 
var size_data = []; 
var color_data = []; 

這樣你可以這樣做:

[].concat(man_data, size_data, color_data); 

另外,而不將你可以只發送的結構如下數據:

var data = { 
    man_data: [], 
    size_data: [], 
    color_data: [] 
}; 

比的方式你將有要做的是發送該對象JSON.stringify(data);

0

嘗試更改您的數據p Ajax調用參數爲data: { 'man': JSON.stringify(man_data), 'size': JSON.stringify(size_data),'color': JSON.stringify(man_color)}如果代碼格式不正確,我很抱歉。

+0

你好,我得到JSON.Stringify不是一個函數 – OrElse

+0

使用JSON.stringify,我有S大寫不應該 –

+0

無效的JSON原始人:man。 – OrElse

相關問題