使用cakephp 3中的getData访问jquery反序列化数据

时间:2017-06-07 05:12:49

标签: jquery ajax cakephp cakephp-3.4

我正在使用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 个答案:

答案 0 :(得分:1)

您需要更改的是将序列化数据发布到的方式:

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

这样,您的getData()将以预期格式返回数据。

有关通过jQuery.post()传递序列化数据的完整信息,请访问:jQuery.post()