Передать массив в запрос ajax в $ .ajax () [duplicate]

145

Возможный дубликат:
Сериализация JSON в jQuery

Я хочу отправить массив как запрос Ajax:

info[0] = 'hi';
info[1] = 'hello';

$.ajax({
  type: "POST",
  url: "index.php",
  success: function(msg){
    $('.answer').html(msg);
  }
});

Как я могу это сделать?

  • 0
    решение здесь: stackoverflow.com/questions/713884/…
  • 0
    тип: 'POST', url: '/ url / action /', данные: {param1: 1, id: "text"}, dataType: 'text',
Теги:
arrays

3 ответа

180
Лучший ответ
info = [];
info[0] = 'hi';
info[1] = 'hello';


$.ajax({
   type: "POST",
   data: {info:info},
   url: "index.php",
   success: function(msg){
     $('.answer').html(msg);
   }
});
  • 10
    да ... это сработало .. спасибо .. можно сделать еще кое-что ... это инициализация info = {}; затем данные: информация,
  • 2
    он посылает 0 = привет & 1 = привет, это будет работать? зависит от вашего кода на стороне сервера. info = {} - это простой объект в Javascript. info = [] является объектом массива.
Показать ещё 3 комментария
49

Просто используйте метод JSON.stringify и передайте его как параметр "data" для функции $.ajax, например:

$.ajax({
    type: "POST",
    url: "index.php",
    dataType: "json",
    data: JSON.stringify({ paramName: info }),
    success: function(msg){
        $('.answer').html(msg);
    }
});

Вам просто нужно убедиться, что вы включили файл JSON2.js на свою страницу...

  • 0
    Мне нужно было добавить JSON.stringify(...) Спасибо за помощь!
  • 0
    В моем случае запрошенная карта ключ-значение была неправильной с приведенным выше кодом. Я изменил строку «data» на: data: {paramName: JSON.stringify (info)},
Показать ещё 2 комментария
10

Поскольку вы используете jQuery, используйте функцию seralize для сериализации данных, а затем передайте его в параметр данных для вызова ajax:

info[0] = 'hi';
info[1] = 'hello';

var data_to_send = $.serialize(info);

$.ajax({
            type: "POST",
            url: "index.php",
            data: data_to_send,
            success: function(msg){
                $('.answer').html(msg);
            }
        });
  • 1
    Это не вся правда, по крайней мере, не сегодня. JQuery не будет автоматически сериализовать какой-либо массив. Когда я попытался с простым массивом целых чисел, он сохранил только последний элемент. Пожалуйста, проверьте этот пост для более подробного объяснения: stackoverflow.com/a/4239496/261332
  • 0
    Спасибо @userfuser Я обновил ответ и удалил часть автоматической сериализации.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню