обработайте запрос json в PHP

При совершении ajax вызова, когда contentType установлен на application/json вместо значения по умолчанию x-www-form-urlencoded, сторона сервера (в PHP) не может получить параметры сообщения.
в следующем рабочем примере, если бы я установил contentType на "application/json" в запросе ajax, $ PHP _POST был бы пуст. почему это происходит? Как я могу обработать запрос, где contentType является application/json правильно в PHP?

$.ajax({
    cache: false,
    type: "POST",
    url: "xxx.php",
    //contentType: "application/json",
    processData: true,
    data: {my_params:123},
    success: function(res) {},
    complete: function(XMLHttpRequest, text_status) {}
});
9
задан 1stthomas 11 November 2017 в 17:28
поделиться

2 ответа

<?php
   var_dump(json_decode(file_get_contents('php://input')));
?>
25
ответ дан 4 December 2019 в 08:00
поделиться

Вы найдете нераспознанные типы MIME в $HTTP_RAW_POST_DATA. Вы также можете заставить PHP всегда заполнять этот массив (не только для нераспознанных типов MIME), установив директиву php.ini always_populate_raw_post_data в true.

В противном случае необработанные данные поста будут доступны через обертку ввода php://input

Дополнительная информация:

http://us.php.net/manual/en/wrappers.php.php

http://php.net/manual/en/reserved.variables.httprawpostdata.php

http://www.php.net/manual/en/ini.core.php#ini.always-populate-raw-post-data

2
ответ дан 4 December 2019 в 08:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: