我正在使用ajax在cakephp应用中保存数据。 ajax的工作范围是保存数据 - 当我点击提交按钮时,注释会保存到数据库中,甚至会自动显示在我的注释列表中。但是,无论我尝试什么都没有在“成功”功能中发生。我无法收到警报但也无法收到错误提醒。
发生了什么事?这与蛋糕如何返回数据有关吗?在我的控制器的添加功能中,保存部分有效。检查请求是否为ajax的部分似乎没有做任何事情。我已经尝试在那里放置一个重定向,页面不会重定向。要明确:我不希望页面被重定向;我想留在页面上。但是,由于我无法取得成功,我无法显示“已保存”消息或清除表单字段或其他任何内容。想法?
// my jquery script
$(document).ready(function () {
// Turn submit button into an ajax call
$('#save-comment input').click(function(){
saveComment();
});
// This function is called when the "save" button is clicked
function saveComment()
{
var formdata = $('#comment-form').serialize();
$.ajax({
type: "POST",
url: "/cakeblog/comments/add",
data: formdata,
success: function(result) {
alert("success");
},
error:function (){
alert('error');
}
});
}
});
// my controller
class CommentsController extends AppController {
public $name = 'Comments';
public function add() {
if (!empty($this->data)) {
if($this->Comment->save($this->data)){
if($this->request->is('ajax')){
// nothing I put here seems to do anything
$this->redirect(array('action'=>'index'));
} else {
$this->Session->setFlash('Message sent');
$this->redirect(array('action'=>'index'));
}
}
}
}
}
答案 0 :(得分:0)
您尚未在控制器中返回Http Response。您需要在Http Response
中返回function add()
。为此,您需要在控制器中echo
。
似乎检测ajax是错误的...使用下面的方法来检测ajax。
$this->set('isAjax', $this->RequestHandler->isAjax());
还有一件事。您在控制器中重定向.u无法在该视图中重定向。你必须成功调用你的ajax。
答案 1 :(得分:0)
代码看起来正确。一些指示: