JQuery Ajax для передачи массива.Нужна помощь - PullRequest
3 голосов
/ 11 июня 2011

Я боролся и искал повсюду, но не могу найти решение этой проблемы.Я хочу передать данные массива в $ .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 голосов
/ 11 июня 2011

Я бы изменил ваш $.ajax вызов:

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

И на стороне сервера создайте модель представления для привязки к:

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

Теперь ваше действие будет приниматьмассив этих типов:

public ActionResult So(BackerEntry[] backerEntries) 
{
    // ...
}
0 голосов
/ 11 июня 2011
  var fields = $("
      .gridTable tr:not(.gridTitleRow) input.idField,
      .gridTable tr:not(.gridTitleRow) input[name='code']
").serializeArray();

$. Ajax ({...

data: { backerEntries: fields } 

...});

можете ли вы попробовать это для сериализации вашего массива?

0 голосов
/ 11 июня 2011

Попробуйте JSON.stringify () на стороне клиента для сериализации данных в строку, а затем на стороне сервера попытайтесь декодировать эти данные.

Вы получите массив или хеш, которые вам нужны.

JSON

0 голосов
/ 11 июня 2011

Будет ли это работать для вас?

 var dataArray = new Array();

 // fill your array     

 $.ajax({
     url: "/HeaderMenu/So",
     type: "POST",
     data: {'backerEntries' : dataArray},
     // the rest of your code
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...