gpt4 book ai didi

ajax - 如何在 CakePHP 中使用 Js->submit()?

转载 作者:行者123 更新时间:2023-12-04 16:08:11 26 4
gpt4 key购买 nike

我试图为 CakePHP 应用程序中的留言板创建一个简单的 Ajax 表单,但我终生无法弄清楚如何正确使用 Js->submit() 函数通过 Ajax 提交表单。

这是我 View 中的表单代码:

<?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>

这是 Controller 操作:
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';到 Controller (见上文),但它没有效果。这是 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;
});
});

最佳答案

发生的事情是它加载了 default布局。您必须将布局更改为 ajax与以下行:

$this->layout = 'ajax';

您在 isAjax() 中插入该行健康)状况。

还有您的 options数组格式错误。 action key 应该在 url 内 key 。
$this->Js->submit('Post Your Message', array(
'url' => array(
'action' => 'add'
),
'update' => '#message_board'
)
);

关于ajax - 如何在 CakePHP 中使用 Js->submit()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3901906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com