Как из Ajax POST json, получить данные в PHP?

Имеется Ajax отправка:
$.ajax({
                        type: 'POST',
                        dataType: 'JSON',
                        url: '/apiw/',
                        data: this.data,
                        cache: false,
                        context: this
                    })

, где this.data:
JSON.stringify({
                            controller: 'controller',
                            action: 'action',
                            jsonContent: true,
                        });

В итоге, отправляются сделующие данные: (P.s используется ещё криптор CryptoJS.AES)
{"ct":"5cd5ElvHhiXAQjHvv9xDz1VQRB6UWPPYwYRrskarxm65nGXvrVgjjhg9kSbO7Ec3/Lu/0zpyByhDG1odMbdiruubx5Yfc4oqQSN7scKr0mo:","iv":"b2e7d5affc491a76d507c2e26820b5f6","s":"a94bf91b838c94e7"}


Вопрос в сделующем, как обработать данный массив? Используя json_decode(), пишет: Warning: json_decode() expects parameter 1 to be string, object given - json_decode($_POST);
  • Вопрос задан
  • 379 просмотров
Решения вопроса 1
BuriK666
@BuriK666
Компьютерный псих
json_decode(file_get_contents('php://input'));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
InstantMedia
@InstantMedia
Не очень понятно зачем такой изворот с JSON.stringify, но проще и логичней сделать так:

this.data = {
    controller: 'controller',
    action: 'action',
    jsonContent: true
};
$.post('/apiw/', this.data, function(data){
// в data будет объект, если вы в /apiw/ результатом вернёте JSON
}, 'json');

Тип json нужно указывать, если ответ будет в json.

Соответственно в PHP в $_POST будет
array(
    'controller' => 'controller',
    'action' => 'action',
    'jsonContent' => true
);


Можно и иначе сделать:

this.data = {
    controller: 'controller',
    action: 'action',
    jsonContent: true
};
$.post('/apiw/', {param_name: this.data}, function(data){
// в data будет объект, если вы в /apiw/ результатом вернёте JSON
}, 'json');


Тогда в $_POST будет
array(
    'param_name' => array(
        'controller' => 'controller',
        'action' => 'action',
        'jsonContent' => true
    )
);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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