2015-07-14 5 views
1

Мне нужно отправить массив через ajax, но по какой-то причине он не отправит, я подозреваю, что это связано с сериализацией.Построение массива для ajax?

Как я могу создать массив, чтобы он совместим с ajax?

Мне нужен массив в этом формате, пара значений ключа, где значение представляет собой другой массив.

[order: Array[1], type: Array[1]] 

Я объявляю свой массив следующим образом:

filters = []; 

Если входы проверяются добавить их в массив.

var order = $('input[name="order[]"]:checked').map(function(){return this.value;}).get(); 
if(!$.isEmptyObject(order))this.filters['order'] = order; 
.... 

С идеей, если входы не выбраны, массив пуст и поэтому не отправляется ajax.

Как я могу поддерживать структуру массива, но сделать его совместимым с ajax?

+0

Аякс технически не имеют каких-либо требований форматированием. Это не самостоятельная технология, как javascript, это методология. Приемник данных обычно определяет формат, в который вы его отправили. Для php или других апплетов javascript вы обычно используете json-кодирование. Но вы также можете использовать xml или собственную настройку. попробуйте JSON.stringify (значения); – danielson317

ответ

1

Массивы не используют пары ключ-значение. Вместо этого используйте объект.

var obj = {order: Array[1], type: Array[1]} 
+0

Как объявить объект, а затем добавить к нему новые элементы после некоторых операторов if? – panthro

+0

Легко! Просто объявите 'var obj = {}', а затем, когда вы хотите добавить свойство, используйте точечную нотацию, т. Е. 'Obj.propertyToAdd =" Это свойство "'. – OceansOnPluto

0

Если вы используете JQuery, увидеть мой ответ here. У меня была аналогичная проблема. Когда вы передаете массив или объекты, вы должны использовать JSON.stringify() и задавать тип содержимого.

1

Я думаю, что вам нужно объявить filters как объект:

filters = {}; 
this.filters.order = order; 
Смежные вопросы