Отправить параметр массива с помощью jQuery ajax / load - PullRequest
13 голосов
/ 15 октября 2010

public ActionResult DoSomething(string[] arr, bool someBool, int someInt) { }

при попытке вызвать указанный выше метод из jQuery:

var test = [];
test.push('dog');
test.push('cat');

$container.load('MyController/DoSomething',
                { 'arr[]': test, 'someBool': true, 'someInt': 1 },
                function(response, status, xhr) {
                    // ...
                });

параметр массива имеет значение null, остальные параметры в порядке.Что я делаю не так?

Инструменты разработчика Chrome показывают данные формы, представленные как

arr%5B%5D%5B%5D:dog
arr%5B%5D%5B%5D:cat
someBool:true
someInt:1

, не уверен, что там происходит, но мне не подходит

Ответы [ 4 ]

28 голосов
/ 15 октября 2010

Если вы используете jquery 1.4, вам может потребоваться установить для параметра traditional значение true, чтобы обеспечить совместимость с форматом подшивки модели по умолчанию в ASP.NET MVC:

var test = [];
test.push('dog');
test.push('cat');

$.ajax({
    url: 'MyController/DoSomething',
    type: 'GET',
    traditional: true,
    data: { arr: test, someBool: true, someInt: 1 },
    success: function(result) {
        $container.html(result);
    }
});

или, если вы предпочитаете метод .load():

var data = { arr: test, someBool: true, someInt: 1 };
$container.load('MyController/DoSomething', $.param(data, true), 
    function(response, status, xhr) {
    // ...
});
1 голос
/ 15 октября 2010

Просто удалите []

{ 'arr': test, 'someBool': true, 'someInt': 1 },

Отправленные значения (проверка с помощью Firebug).

arr[]       dog
arr[]       cat
someBool    true
someInt     1
0 голосов
/ 11 июля 2014

Даже когда я сталкивался с ошибкой, при передаче массива со страницы HTML на страницу aspx.

Мое требование состояло в том, чтобы загрузить страницу aspx в тег DIV HTML-страницы.на странице загрузки мне нужно передать эти значения массива JS для загрузки страницы aspx.

я использовал метод ниже.

$('#<divTagID>').load("Targetpage.aspx",{"Arr":JSArrValues});

В событии загрузки страницы aspx я могуполучить доступ к этим значениям как:

string results = Response["Arr[]"];

Благодаря документации JQuery API введите описание ссылки здесь и stackoverflow

0 голосов
/ 15 октября 2010

Вы можете увидеть, если эта проблема похожа на вашу:

Передача вложенных массивов в asp.net mvc с помощью jQuery's $ .ajax

...