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

Как отправить массив параметров запроса на сервлет с помощью jQuery $.ajax?

Я хотел бы отправить массив JavaScript в сервлет с помощью jQuery $.ajax.

var json=[1,2,3,4];
$.ajax({
            url:"myUrl",
            type:"POST",
            dataType:'json',
            success:function(data){
                // codes....
            },
            data:json

        });

Когда я использую

request.getParameter("json");
request.getParameterValues("json");

Он возвращает null.

Как мне получить доступ к значениям?

4b9b3361

Ответ 1

Отправьте массив как значение объекта JS, чтобы вы оказались в {json:[1,2,3,4]}.

var json=[1,2,3,4];
$.ajax({
    url:"myUrl",
    type:"POST",
    dataType:'json',
    data: {json:json},
    success:function(data){
        // codes....
    },
});

В сервлет вам необходимо суффицировать имя параметра запроса с помощью [].

String[] myJsonData = request.getParameterValues("json[]");

jQuery добавляет их, чтобы быть дружелюбными к слабым типизированным языкам, таким как PHP.

Ответ 2

Вам нужно преобразовать массив в тип JSON, чтобы вместо [] ему нужно было прочитать

 var array = [ 1, 2, 3, 4 ];

для этого вам нужно позвонить

 var json = JSON.stringify(array)

то вы можете передать его в свой вызов ajax

 $.ajax({ url:"myUrl",
          type:"POST",
          data: json,
          dataType:'json',
          success:function(data){
             // codes....
          }})

Ответ 3

Вам нужно разместить свой объект данных javascript следующим образом.

http://api.jquery.com/jQuery.post/

$.post("test.php", { name: "John", time: "2pm" },
   function(data) {
     alert("Data Loaded: " + data);
   });