Получить доступ к несериализованным данным 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

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

1 ответ

Решение

Вам нужно изменить способ публикации сериализованных данных на:

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

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

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

Другие вопросы по тегам