Проблема с помощником Ajax в Cake PHP

Я пытаюсь реализовать функцию Ajax в разделе комментариев моего блога. Я загрузил prototype-1.6.0.3.js и разместил его в папке js внутри webroot. Я внес следующие изменения в файл макета (default.ctp)

$javascript->link(array('prototype')); 

Кроме того, к контроллерам добавлен следующий код

 var $helpers = array('Html', 'Form', 'Ajax','Javascript'); 

Это мой код в файле posts_controller.php

 function view($id = null) { if (!$id) { $this->Session->setFlash(__('Invalid Post.', true)); $this->redirect(array('action'=>'index')); } $post = $this->Post->read(null,$id); $comments = $this->Post->Comment->find('all', array('conditions'=>array('Post.id'=>$id))); $this->set(compact('post','comments')); } 

Мой код в файле view.ctp

 <h2>Comments</h2> <div id="comments"> <?php foreach($comments as $comment): ?> <div class="comment"> <p><b><?php echo $comment['Comment']['name']; ?></b></p> <p><?php echo $comment['Comment']['content']; ?></p> </div> <?php endforeach; ?> <?php echo $ajax->form('/comments/add','post',array('update'=>'comments'));?> <?php echo $form->input('Comment.name');?> <?php echo $form->input('Comment.content');?> <?php echo $form->input('Comment.post_id',array('type'=>'hidden','value'=>$post['Post']['id']));?> <?php echo $form->end('Add Comment');?> </div> 

Я добавил следующую функцию в comment_controller.php

 function add() { if (!empty($this->data)) { $this->Comment->create(); if ($this->Comment->save($this->data)) { $comments = $this->Comment->find('all',array('conditions'=>array('post_id'=>$this->data['Comment']['post_id']),'recursive'=>-1); $this->set(compact('comments')); $this->render('add_success','ajax'); } else { $this->render('add_failure','ajax'); } } } 

Далее следует код в файле add_success.ctp

 <?php foreach($comments as $comment): ?> <div class="comment"> <p><b><?php echo $comment['Comment']['name'];?></b></p> <p><?php echo $comment['Comment']['content'];?></p> </div> <?php endforeach;?> 

Теперь проблема в том, что я не могу добавлять комментарии. Ничего не происходит, когда я нажимаю кнопку добавления комментариев. Я вручную добавил комментарии в базу данных, и это работает. Но у меня возникают проблемы, когда я пытаюсь помочь Ajax Helper.

Где проблема? И ребята, извините за такой длинный вопрос. [:(]

У вас установлен firebug, чтобы вы могли проверить, выполняет ли он запрос ajax?

Возможно, попробуйте сделать $ form-> submit ('Добавить комментарий'); чтобы сгенерировать кнопку и посмотреть, имеет ли она значение и фактически выполняет запрос ajax.

Вы получаете ошибки javascript?

похоже, что вы следуете примеру из «Начало CakePHP». Думаю, я тоже сделал ту же ошибку

он не упоминается в книге, но имя файла .js (в webroot / js) должно соответствовать аргументу вспомогательной функции, поэтому выполните одно из следующих действий:

1) переименуйте prototype-1.6.0.3.js (внутри папки webroot / js) в prototype.js

ИЛИ

2) измените вспомогательную функцию на

 $javascript->link(array('prototype-1.6.0.3')); 

Если я правильно помню, вам также нужно включить scriptaculous для встроенных функций ajax, чтобы работать правильно тоже …

На самом деле это не ответ, но я думал, что стоит упомянуть, что я тоже столкнулся с этой проблемой. И да, я использую эту книгу, упомянутую @smchacko. Я использую Prototype Version 1.7 :

 //this is how I called it and renamed it to prototype <?php echo $javascript->link( array('prototype')); ?> 

Интересно отметить, что у меня есть ошибка огня, а также панель инструментов веб- разработчика . Firebug не возвращает никаких ошибок, но плагин Chris Pederic имеет несколько предупреждений … Его слишком много, чтобы упомянуть. Это отображается в правом верхнем углу экрана