Log*_*ist 4 forms ajax cakephp helper
我试图在CakePHP应用程序中为消息板创建一个简单的Ajax表单,但我不能在我的生活中弄清楚如何正确使用Js-> submit()函数通过Ajax提交表单.
下面是我视图中的表单代码:
<?php
echo $this->Form->create('Message',array(
'type' => 'post',
'action' => 'add',
'onSubmit' => 'return false;'
));
echo $this->Form->input('name', array('label' => 'From:'));
echo $this->Form->input('text', array('label' => 'Message:'));
echo $this->Js->submit('Post Your Message', array(
'action' => 'add',
'update' => '#message_board'
));
echo $this->Form->end();
?>
<div id="message_board">
...
</div>
Run Code Online (Sandbox Code Playgroud)
这是控制器动作:
function add() {
$this->autoRender = false;
if($this->RequestHandler->isAjax()) {
$this->layout = 'ajax'; //THIS LINE NEWLY ADDED
if(!empty($this->data)) {
if($this->Message->save($this->data)) {
$this->Session->setFlash('Your Message has been posted');
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我提交表单时发生的是表单的精确副本,其包含的div在message_board div中重复.奇怪的.
显然我缺少一些东西(或几件事).如果有人有任何想法,或者知道如何使用它的良好信息来源,将非常感激.
谢谢.
更新:我尝试将新行添加$this->layout = 'ajax';到控制器(见上文),但它没有任何效果.这是CakePHP的jquery输出,可能会告诉某人最新情况.
$(document).ready(function () {
$("#submit-707957402").bind("click", function (event) {
$.ajax({
action:"add",
data:$("#submit-707957402").closest("form").serialize(),
dataType:"html",
success:function (data, textStatus) {
$("#message_board").html(data);
},
type:"post",
url:"\/messages"
});
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
它会加载default布局.您必须ajax使用以下行更改布局:
$this->layout = 'ajax';
Run Code Online (Sandbox Code Playgroud)
您在isAjax()条件中插入该行.
你的options阵列也有错误的格式.在action关键的应该是内部的url关键.
$this->Js->submit('Post Your Message', array(
'url' => array(
'action' => 'add'
),
'update' => '#message_board'
)
);
Run Code Online (Sandbox Code Playgroud)