【发布时间】:2011-04-26 05:04:06
【问题描述】:
我正在使用 CakePHP 1.3,并尝试使用 ajax 制作一个简单的留言板。我正在尝试使用 Js 助手在索引页面上提交表单,然后刷新留言板的 div 以包含新消息。这一切都在一个页面上。
我之前已经发布过这个问题,但我想重新表述这个问题并包括一些更新。上一个问题可以看这里How to use Js->submit() in CakePHP?
当我几天后回到这个项目时,我立即进行了测试,并且表单工作了(有点)。提交表单向数据库添加了一条消息(它没有显示消息,但我还没有攻击那部分)。它工作了 2 次,添加了 2 条消息。然后我打开控制器文件并注释掉一些调试代码,它停止工作。似乎没有调用该操作。
这是我的messages_controller.php:
<?php
class MessagesController extends AppController {
function index() {
$messages = $this->Message->find('all');
$this->set('messages',$messages);
}
function add() {
$this->autoRender = false;
$this->Session->setFlash('Add action called');
if($this->RequestHandler->isAjax()) {
$this->Session->setFlash('Ajax request made');
$this->layout = 'ajax';
if(!empty($this->data)) {
if($this->Message->save($this->data)) {
$this->Session->setFlash('Your Message has been posted');
}
}
}
}
}
?>
这是我的 Message 类的 index.ctp
<div id="guestbook" class="section_box">
<h3 id="toggle_guestbook"><div class="toggle_arrow"></div>Sign our Guestbook</h3>
<?php
echo $this->Form->create('Message');
echo $this->Form->input('name', array('label' => 'From:'));
echo $this->Form->input('text', array('label' => 'Message:'));
echo $this->Js->submit('Post Your Message', array(
'url' => array(
'controller' => 'messages',
'action' => 'add'
),
'update' => '#message_board'
));
echo $this->Form->end();
echo $this->Js->writeBuffer(array('inline' => 'true'));
?>
<div id="message_board">
<?php foreach($messages as $message) { ?>
<div class="message">
<p class="message_txt">
<?php echo $message['Message']['text']; ?>
</p>
<div>
<div class="message_name">
<?php echo $message['Message']['name']; ?>
</div>
<div class="message_date">
<small>
<?php echo $message['Message']['date']; ?>
</small>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
单击提交按钮后,我可以在控制台中看到使用正确数据对http://localhost/messages/add 进行了 POST。但似乎没有回应。没有从控制器设置 Flash 消息“调用的添加操作”(或任何 Flash 消息,就此而言),并且 #message_board 的内容被清空。
如果此时我刷新页面,会出现第二条 flash 消息(“Ajax request made”),并恢复 #message_board 的内容。但是新消息没有保存,它与之前的 2 条消息相同。
我被难住了。我有一种感觉,也许有更大的问题导致我的问题,但我看不到它。任何帮助将不胜感激。
【问题讨论】:
标签: ajax cakephp form-submit helper