I am trying to pass an array in an array via ajax. If I do not pass in the additional array, it works just fine.
For example:
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
}
});
Sending this will not work. The API (in PHP) gets the code and is able to tell me what userId
is, but userSettings
is not defined.
Notice: Undefined index: userSettings in /api/update-settings.php on line 9
However, if I set the settings
variable as a different data type (such as an int or string), the index is no longer undefined.
Within the PHP, when I dump request to see what's in it, userSettings
is not found:
var_dump($_REQUEST);
Output: array(1) { ["userId"]=> string(1) "1" }
I'm adding items to my array using settings['template'] = template;
Before I submit the ajax request, I can console log it and I get this:
[p: "setting1", s: 1587, emp: "setting2", ems: 3245, template: "", …]
which contains all data that I need.
I tried to stringify the data with JSON.stringify(settings)
but then ajax passes an empty array:
array(2) { ["userId"]=> string(1) "1" ["userSettings"]=> string(2) "[]" }
I feel like this is something simple, but I can't figure it out. And yes, I've done my searches - I've found similar things, but none of the responses seem to help.
Thank you, in advance.