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