2011-06-11 239 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 } 

... });

可以试试这个序列化你的阵列?