/ / Функцията за успех на Ajax няма да се задейства дори когато повикването е успешно - jquery, ajax, cakephp

Функцията за успех на Аякс няма да се задейства, дори когато повикването успее - jquery, ajax, cakephp

Аз използвам ajax, за да запазвам данни в app. 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 за отговор № 1

Кодът изглежда правилен. Някои указатели:

  1. Проверете конзолата на JavaScript за грешки?
  2. Проверете мрежовия изглед на браузъра си: Какво изпраща сървъра като отговор за този AJAX повикване? Отговаря ли изобщо?

0 за отговор № 2

Не сте върнали Http Response във вашия контролер Http Response в function add() , За това трябва echo в контролера си.

Изглежда, че откриването на ajax е грешно ... използвайте по-долу, за да откриете ajax.

$this->set("isAjax", $this->RequestHandler->isAjax());

И още нещо. пренасочвате в контролера си .u не може да пренасочите в този изглед.