Подтвердить что ты не робот

Отправить массив param с jQuery ajax/load

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) {
                    // ...
                });

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

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

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

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

4b9b3361

Ответ 1

Если вы используете 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) {
    // ...
});

Ответ 2

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

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

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

arr[]       dog
arr[]       cat
someBool    true
someInt     1

Ответ 4

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

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

i используется ниже.

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

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

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

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