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

Отправка массива объектов в качестве данных ajax post?

Моя общая цель - получить все некоторые выпадающие списки на странице и отправить их для обработки файлом php.

Прямо сейчас, как я делаю это в jQuery, вы создаете общий массив расписания, а затем добавляете каждый элемент для обновления в этот массив. Поэтому у меня есть что-то вроде:

var schedule = [];
var data = { 
   'user_id' : '12', 
   'day_of_week' : 'Monday',
    'when' : 'start',
    'time' : '12 AM'
 }
schedule.push(data);
var data = { 
   'user_id' : '13', 
   'day_of_week' : 'Tuesday',
    'when' : 'end',
    'time' : '12 AM'
 }
schedule.push(data);
// schedule would have two objects in it

Очевидно, что в циклах и т.д.

Итак, у моего массива расписаний в этом случае есть два объекта.

Теперь, можно ли использовать этот массив расписания как данные ajax? Это не работает, если я делаю что-то вроде:

$.ajax({
  url: 'http://something.com/ajax',
  data: schedule,
  type: 'POST'
});

Но если я вместо этого изменил его на schedule[0], он будет работать нормально, но только для первого в массиве расписания. Очевидно,

4b9b3361

Ответ 1

Убедитесь, что вы используете правильную версию jQuery. В более ранних версиях вам нужно было укусить; новые версии используют "интеллектуальную догадку" в переменной data. Вы можете явно указать jQuery, что вы передаете ему объект javascript с параметром dataType, или вы можете позволить jQuery понять это.

Documentation

jQuery.ajax() - http://api.jquery.com/jQuery.ajax/

Ответ 2

Атрибут data должен быть объектом.

Что вы можете сделать, так это:

$.ajax({
  url: 'http://something.com/ajax',
  data: {schedule: schedule},
  type: 'POST'
});

Итак, если вы получили это, например, на PHP, у вас есть $_POST["schedule"]. Это точно так же, как и в JavaScript.

О, да, я забыл... также взгляните на .serialize() и .serializeArray()!

Ответ 3

Передайте его как JSON:

$.ajax({
  url: 'http://something.com/ajax',
  data: {schedule: schedule},
  type: 'POST',
  dataType: 'JSON'
});

Он отправит на сервер закодированную строку JSON, которые могут обрабатывать серверные языки. (в PHP это делается с помощью json_decode()).