簡體   English   中英

Cake PHP中的Ajax Helper問題

[英]Problem with Ajax Helper in Cake PHP

我正在嘗試在博客的評論部分中實現Ajax功能。 我已經下載了prototype-1.6.0.3.js並將其放在webroot的js文件夾中。 我在布局文件(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('Add Comment'); 生成按鈕並查看它是否有所不同並實際執行ajax請求。

您收到任何JavaScript錯誤嗎?

看起來您正在按照“ Beginning CakePHP”中的示例進行操作,我想我也犯了相同的錯誤

書中沒有提到它,但是.js文件的名稱(在webroot / js中)必須與helper函數參數匹配,因此請執行以下操作之一

1)重命名prototype-1.6.0.3.js(在您的webroot / js文件夾中)到prototype.js

要么

2)將輔助功能更改為

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

如果我沒記錯的話,您還需要包括scriptaculous,以便內置的ajax函數也能正常工作...

這並不是一個真正的答案,但我認為值得一提的是我也遇到了這個問題。 是的,我正在使用@smchacko提到的那本書。 我正在使用1.7版原型

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

有趣的是,我提到了Fire Bug和Web Developer工具欄 Firebug不會返回任何錯誤,但是Chris Pederic的插件有幾個警告...值得一提。 它出現在屏幕的右上方

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM