Доброго времени суток.
Возникла потребность передать обычный массив с помощью AJAX.
var personal_set = [1,3,2];
personal_set.push(value); // перед отправкой элементы добавляются только таким методом
personal_set.splice(jQuery.inArray(value, personal_set), 1); // а удаляются - таким. Это происходит в зависимости от действий пользователя.
// в конце концов, остается одномерный массив
alert(personal_set); // вернет что-то вроде "1,3,2,14"
$.ajax({ // отправляем данные
url: 'path/to/php_script',
type: 'post',
data: {personal_set: personal_set}
});
PHP-скрипт выводит данные вот так:
var_dump($_POST);
Результат:
array(1) {
["personal_set"]=>
array(4) {
[0]=>
string(1) "1"
[1]=>
string(1) "3"
[2]=>
string(1) "2"
[3]=>
array(1) {
[0]=>
string(2) "14" // обратите внимание на этот элемент
}
}
}
Элементы, содержащиеся в массиве изначально - ОК.
Элементы, добавленные push-ем - добавляются в виде одноэлементных массивов. Почему так происходит и как с этим бороться?
UPDATE: в очередной раз, стоит написать на форум, проблема решается. Решение:
personal_set.push(parseInt(value, 10));