JQuery Ajax传递数组。需要帮助。

3

我一直苦苦寻找答案,但却无法解决这个问题。我想在$.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!!!");
                }
            });
    });

在MVC3控制器中需要声明什么?

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


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


        }
4个回答

4

I would change your $.ajax call:

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

在服务器端创建一个视图模型进行绑定:

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

现在你的操作将接受这些类型的数组:
public ActionResult So(BackerEntry[] backerEntries) 
{
    // ...
}

谢谢,那就是我误解的地方。 - Pirzada

0

在客户端上尝试使用 JSON.stringify() 将数据序列化为字符串,然后在服务器端尝试解码该数据。

您将获得所需的数组或哈希。

JSON


0

这个对你有用吗?

 var dataArray = new Array();

 // fill your array     

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

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

$.ajax({ ...

data: { backerEntries: fields } 

... });

你能尝试一下使用这个来序列化你的数组吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接