【发布时间】:2010-11-05 05:02:30
【问题描述】:
我在 cakephp 中有以下表格:
<div class="quickcontactDisplay">
<?php
echo $form->create('Enquiry',array('action'=>'add','class'=>'quickcontact'));
echo $form->hidden('visitor_id', array('value' => $visitor));
echo $form->input('name');
echo $form->input('emailAddress',array('size' => 30));
echo $form->input('enquiry');
echo $form->end('Ok, I\'m done');
?>
</div>
如您所见,它包含在一个 div 中,类为 .quickcontactDisplay。
提交时,它会转到我的查询控制器的添加操作,并使用 jQuery 表单插件通过 ajax 执行此操作。这是我的 jQuery:
$(document).ready(function(){
// bind 'quickcontact' and provide a simple callback function
$('form.quickcontact').ajaxForm(function(html) {
//updates the .quickcontactDisplay div with the action output.
$('.quickcontactDisplay').html(html);
});
});
此时查询控制器的实际操作并没有做很多事情,除了返回我的模型中设置的内置验证消息。 无论如何,这是代码:
function add() {
$this->set('visitor', $this->Session->read("visitor"));
if (!empty($this->data))
{
$this->Enquiry->create();
if ($this->Enquiry->save($this->data))
{
//echo 'success';
$this->layout = 'ajax';
}
else
{
//echo 'fail';
$this->layout = 'ajax';
}
}
}
我的问题:
当我提交表单时,它会使用错误消息更新我的 div,一切似乎都很好。但是,当我再次提交它时,它不会触发 ajax 调用,而只是直接提交给操作,导致页面仅包含操作输出 html。
以下是操作返回的内容:只有空表单和验证消息: (我认为是时候使用 pastebin 了,因为它有点啰嗦)
似乎当 .quickcontactDisplay div 中包含的表单通过 ajax 更新时,它会破坏 ajax 绑定,并且不会再次启动。谁能看到这里会发生什么?谢谢。
【问题讨论】: