我試圖爲CakePHP應用程序中的留言板創建一個簡單的Ajax表單,但是我不知道如何正確使用Js-> submit()函數通過Ajax提交表單。如何在CakePHP中使用Js-> submit()?
我的繼承人視圖中的表單代碼:
<?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>
這裏是控制器動作:
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');
}
}
}
}
奇怪的是,當我提交表單的形式的精確副本會發生什麼,其包含的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;
});
});
我感到的印象是整體的js對象蛋糕有點不穩定。將繼續關注這個問題,看看你發現了什麼。 – the0ther 2010-10-18 22:36:16
我已經就同一主題提出了另一個問題,並提供了更詳細的問題描述和更好的解決方案。在這裏看到http:// stackoverflow。com/questions/3947027/action-not-running-with-cakephp-js-submit – 2010-10-19 00:22:44