Cakephp アプリでデータを保存するために ajax を使用しています。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'));
}
}
}
}
}