получить доступ к несериализованным данным jquery, используя getData в cakephp 3

Я использую cakephp 3.4.

У меня есть форма для отправки значений с помощью ajax.

<?= $this->Form->create(null, ['id' => 'search-form']) ?>
<?= $this->Form->control('keyword') ?>
<?= $this->Form->button(__('Search'), ['id' => 'search-submit']); ?>
<?= $this->Form->end() ?>

и отправка этих данных в действие с помощью

$('#search-submit').click(function(event){
    event.preventDefault();
    $.post('/dashboard/custom-search/ajax-search',
    {
        data: $('#search-form').serialize()
    }, function (response)
    {
        $('#search-result').html(response);
    });
    return false;
});

В действии ajaxSearch при отладке данных запроса

debug($this->request->getData());

Это дает

[
    'data' => '_method=POST&keyword=world'
]

Но когда я пытаюсь

debug($this->request->getData('keyword'));

Это дает

null

Как получить сериализованные данные в действии? или Как десериализовать данные в действии/контроллере?


person Anuj TBE    schedule 07.06.2017    source источник


Ответы (1)


Что вам нужно изменить, так это то, как вы публикуете сериализованные данные:

$.post('/dashboard/custom-search/ajax-search',
    $('#search-form').serialize(),
    function (response){
        $('#search-result').html(response);
});

Таким образом, ваш getData() будет возвращать данные в ожидаемом формате.

Полную информацию о передаче сериализованных данных через jQuery.post() можно найти здесь: jQuery.post()

person Szymon    schedule 07.06.2017