【问题标题】:CakePHP 2.0+: Retrieving POST data from Js->submit form in controllerCakePHP 2.0+:从 Js 中检索 POST 数据->在控制器中提交表单
【发布时间】:2012-06-22 18:08:25
【问题描述】:

我正在使用 $this->Js->submit 将值异步传递给我的控制器,而不是更新 div (id = #upcoming)。不知何故,我无法保存/检索传递给我的控制器的“测试”字段的值。 Firebug 告诉我传递了正确的值。我做错了什么?

查看文件(playlist.ctp):

echo $this->Form->create('Add', array('url' => array('controller' => 'Gods', 'action' => 'add')));
echo $this->Form->input('test');       
echo $this->Js->submit('Addddd', array(
'url' => array(
    'controller' => 'Gods',
    'action' => 'add'
),
'update' => '#upcoming'
));
echo $this->Form->end();

echo $this->Js->writeBuffer(array('inline' => 'true'));

控制器动作:

public function add()
{
$this->autoLayout = false;
   $this->layout = 'ajax';
$link = $this->request->data['Add']['test'];
$this->set('test',$link);
}

及其视图文件(add.ctp):

<?php
echo $test;
?>

感谢您的帮助!

【问题讨论】:

    标签: php cakephp post xmlhttprequest


    【解决方案1】:

    你在控制器方法中尝试过 pr($link) 吗?或者,如果您愿意,只需将其发送到日志文件。这样您就可以查看是否收到了数据。

    如果是这样,我认为没有任何返回是因为

     $this->autoLayout = false;
    

    不用这个试试。它仍然会调用 ajax 布局而不是默认的。 否则你必须手动调用渲染函数

    $this->render('add');
    

    编辑 正如下面的 cmets 中所解释的,请确保您的视图位于正确的位置。 (这将是与控制器关联的视图文件夹)

    【讨论】:

    • 杰罗恩,感谢您的回复。但问题是 $link 是空的,这意味着 $this->request->data['Add']['test'];不知何故不起作用。如果我只是回显一些随机的东西,比如回声“blub”;在控制器中,它在 Ajax 调用后正确显示“blub”。这意味着它与布局无关。还能是什么?有没有特定的方法来保存 Js->submit 中的 Post 数据?
    • 我试过你的代码,它对我有用。一切都在同一个“神”控制器中吗?喜欢 View/Gods/playlist.ctp 和 View/Gods/add.ctp?
    • 杰罗恩,感谢您的帮助!我在 View/PlayList/ 中有视图文件(无论出于何种原因)。谢谢,我知道这是我正在监督的“简单”事情。我猜还是习惯了蛋糕:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多