Как вы отправляете массив как часть (JQuery) AJAX-запроса - PullRequest
1 голос
/ 11 января 2011

Я пытался отправить массив как часть запроса ajax, как это:

var query = [];
// in between I add some values to 'query'
$.ajax({
    url: "MyServlet", 
    data: query,
    dataType: "json",  
    success: function(noOfResults) { 
    alert(noOfResults); 
    }
  });
}

Я хотел посмотреть, что я получаю обратно в сервлете, поэтому я использовал эту строку:

System.out.println(request.getParameterMap().toString());

Который возвратил {}, предлагая пустую карту.

Firebug говорит мне, что я получаю 400 bad request ошибку

Если я отправляю queryString как attribute=value как данные«тогда все работает нормально, так что это связано с невозможностью отправить массив как есть.Что мне нужно сделать, чтобы получить эти данные в сервлет для дальнейшей обработки.Я не хочу вытаскивать его и превращать в queryString в JS, если я могу избежать этого.

EDIT: Я использовал функцию .serializeArray () (jQuery) раньшеотправка данных.Я не получаю 400, но ничего полезного не отправляется.

Ответы [ 2 ]

4 голосов
/ 11 января 2011

Вы должны отправить объект, который вы сначала зафиксируете с помощью JSON.stringify.

как это:

var query = [];
// in between I add some values to 'query'
$.ajax({
    url: "MyServlet",
    data: JSON.stringify({ nameParameter: query })
    dataType: "json",
    success: function(noOfResults) {
        alert(noOfResults);
    }
  });
}
1 голос
/ 11 января 2011

Просто попробуйте отправить данные в виде пары имя / значение (что ожидается).Например,

var query = ["data1","data2"];
// in between I add some values to 'query'
$.ajax({
    url: "MyServlet", 
    data: {'query' : query},
    success: function(noOfResults) { 
    alert(noOfResults); 
    }
  });
}

Вы должны получить данные на стороне сервера следующим образом:

query => Array ( [0] => data1 [1] => data2 )

Согласно документации jQuery для data настройка jQuery.Ajax() метод

Если значение является массивом, jQuery сериализует несколько значений с одним и тем же ключом на основе значения традиционной настройки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...