2011-06-11 240 views
3

我一直在掙扎和尋找無處不在,但無法找到解決方案。我想在$ .ajax中傳遞數組數據,但不知道如何。以下是代碼。JQuery Ajax傳遞數組。需要幫助

$("#procressGrid").click(function() { 
     var dataArray = []; 
     $.each($(".gridTable tr:not(.gridTitleRow)"), function(a, b){ 
       var id = $("input.idField", b).val(); 
       var code = $("input[name='code']", b).val(); 

       dataArray.push({ 
        "id": id, 
        "code": code 
       }) 

     }); 

     $.ajax({ 
       url: "/HeaderMenu/So", 
       type: "POST", 

       data: { backerEntries[]: dataArray } 

       dataType: "json", 
       contentType: "application/json; charset=utf-8", 
       beforeSend: function() { $("#statusDropdown").fadeIn(); }, 
       complete: function() { $("#statusDropdown").fadeOut(); }, 
       success: function (data) { 

        if (data.Status == "Success") { 

        } else { 

        } 
       }, 
       error: function() { 
        $("#error").show().html("An error has occured!!!"); 
       } 
      }); 
    }); 

and 在MVC3控制器中聲明什麼?

public ActionResult So(Array backerEntries) 
     { 
      //var b = a; 


       return Json(new { status = "Success", message = "Passed" }); 


     } 

回答

4

我會改變你的$.ajax電話:

$.ajax({ 
    /*snip */ 
    data: dataArray 
}); 

和服務器端創建一個視圖模型綁定到:

public class BackerEntry 
{ 
    public string Id { get; set; } 
    public string Code { get; set; } 
} 

現在你的行動將採取陣列這些類型:

public ActionResult So(BackerEntry[] backerEntries) 
{ 
    // ... 
} 
+0

謝謝你是我誤會 – Pirzada 2011-06-11 19:45:28

0

這會爲你工作嗎?

var dataArray = new Array(); 

// fill your array  

$.ajax({ 
    url: "/HeaderMenu/So", 
    type: "POST", 
    data: {'backerEntries' : dataArray}, 
    // the rest of your code 
}); 
0

嘗試客戶端的JSON.stringify()將數據序列化爲字符串,然後在服務器端嘗試解碼該數據。

你會得到你需要的數組或散列。

JSON

0
var fields = $(" 
     .gridTable tr:not(.gridTitleRow) input.idField, 
     .gridTable tr:not(.gridTitleRow) input[name='code'] 
").serializeArray(); 

$阿賈克斯({ ...

data: { backerEntries: fields } 

... });

可以試試這個序列化你的陣列?