Я пытаюсь передать массив в массив через ajax. Если я не передам дополнительный массив, он работает просто отлично.
Например:
var settings = [];
// add stuff to the array
$.ajax({
type: 'POST',
url: "api/update-settings",
data: {
userId: 1,
userSettings: settings
},
done: function(response) {
//do something with the response
},
fail: function() {
// do error stuff
}
});
Отправка не будет работать. API (в PHP) получает код и может сказать мне, что такое userId
, но userSettings
не определено.
Примечание: неопределенный индекс: userSettings в /api/update-settings.php on
строка 9
Однако, если я установлю переменную settings
в качестве другого типа данных (например, int или string), индекс больше не будет неопределенным.
В PHP, когда я выкидываю запрос, чтобы посмотреть, что в нем, userSettings
не найден:
var_dump($_REQUEST);
Output: array(1) { ["userId"]=> string(1) "1" }
Я добавляю элементы в свой массив, используя settings['template'] = template;
Прежде чем отправить запрос ajax, я могу записать его в консоль и получить следующее:
[p: "setting1", s: 1587, emp: "setting2", ems: 3245, template: "", …]
который содержит все данные, которые мне нужны.
Я пытался упорядочить данные с помощью JSON.stringify(settings)
, но затем ajax передает пустой массив:
array(2) { ["userId"]=> string(1) "1" ["userSettings"]=> string(2) "[]" }
Я чувствую, что это что-то простое, но я не могу понять это. И да, я провел свои поиски - я нашел похожие вещи, но ни один из ответов, похоже, не помог.
Спасибо, заранее.