Почему в php приходит только часть данных переданных AJAX?
let list = {
'cause' : [
{'id' : 0, 'status': 'ajax'},
{'id' : 1, 'status': 'ajax'},
{'id' : 2, 'status': 'ajax'},
{'id' : 3, 'status': 'ajax'},
{'id' : 4, 'status': 'ajax'}
],
'subcause' : [
{'id' : 0, 'status': 'ajax'},
{'id' : 1, 'status': 'ajax'},
{'id' : 2, 'status': 'ajax'},
{'id' : 3, 'status': 'ajax'},
{'id' : 4, 'status': 'ajax'}
]
};
let opt = {
'status' : 'ajax'
'data' : list
}
json.stringify(opt)
После такого запроса, выполняя var_dump($_POST) в php я получаю только status, и cause массив.
То есть если я отправлю не list а list['cause'] результат запроса не меняется.Так же пробовал так записать 'data' : [list[cause], list[subcause]] тоже приходит только cause массив, а subcause как будто и не передаётся. По отдельности данные приходят, но одним запросом не получается. Размер данных 16 обьектов в cause, и 86 обьектов в subcause, эти два массива внутри держат 2-3 значения.
Проверил даже этот маленький массив передать как в выше указан. Тоже приходит только list['cause'] хотя элементов всего 8+-
В $_POST приходит только то, что отправлено в стандартном формате html-формы. Например, если ты отправляешь JS-объект как есть БЕЗ ручной сериализации посредством jQuery $.post, всё придёт нормально.
Но если ты сериализуешь тело запроса в JSON, то получать его нужно примерно так:
$body = file_get_contents('php://input'); // чтение тела запроса в строку
$data = json_decode($body, true); // десериализация JSON в PHP-массив
Если часть, то форму смотри внимательнее или код в JS. Скорее, второе. Наверняка там какой-то post не указан корректно.