2011-07-01 44 views
0

我希望對以下問題提供一些幫助。CakePHP - 從Db使用jQuery檢索新結果

我有一個系統設置,用戶點擊一個圖像(ThumbsUp或ThumbsDown),並在Db中的指定字段增加1,並且新結果應該被髮送回視圖。我能夠使用jQuery來增加Db中的值,但我無法獲得正確的值來更新。它只是顯示爲Array,我想我知道爲什麼。但我該如何解決這個問題?

enter image description here

我的視圖文件

... 
<div id="article_thumbsUp"> 
    <?php echo $comment['Comment']['liked'];?> 
</div> 
<img class="voteup" width="20" src="/img/icons/thumb-up-icon.png"> 
... 

我的jQuery代碼

<script> 
    $(".voteup").click(function() { 
     $('#article_thumbsUp').change(function() { 
      $(this).load('/comments/voteup/10'); 
      function(result) { 
       $('#article_thumbsUp').html(result); 
      }; 
     }) 
     .change(); 
    }); 
</script> 

關於jQuery的,在那裏我有/comments/voteup/10,如何更換10 $comments['Comment']['id']

我的控制文件

function voteUp($id = null){  

    $this->autoRender = false; 

    if($this->RequestHandler->isAjax()){ 
     $this->Comment->id = $id; 
     if($this->Comment->saveField(
          'liked', 
          $this->Comment->field('liked')+1)){   
         $newValue = $this->Comment->findById($id); 
       } 
    } 

    return $newValue; 
} 

我知道findById創建數據的陣列。我如何只返回字段liked

非常感謝,

回答

1

我相信你應該使用$newValue['Comment']['liked']得到喜歡的領域。

關於javascript,我會動態地將id號碼打印到html中的腳本部分。這意味着腳本必須位於文檔的正文中。

例如

<script> 
    $(".voteup").click(function() { 
     $('#article_thumbsUp').change(function() { 
      $(this).load('/comments/voteup/<?php echo $comments['Comment']['id']?>'); 
      function(result) { 
       $('#article_thumbsUp').html(result); 
      }; 
     }) 
     .change(); 
    }); 
</script> 
+0

非常感謝第一個建議。第二個建議正在工作,但沒有做到我所需要的。我沒有解釋,在使用foreach生成的同一頁面上有許多評論。通過使用$ comments ['Comment'] ['id'],jQuery抓住了被foreach迴應的最後一個Comment.id。應該如何處理使用foreach和許多Comment.id的情況。 –

+0

你能從你的視圖文件發佈更多的代碼嗎?添加每個評論添加的forloop。 – AlexBrand

+0

我發佈了更多代碼。請參閱上面..謝謝 –