2011-07-02 49 views
2

我嘗試將數據形式發送AJAX把CakePHP cotroller如何使用RequestHandler接受來自ajax的數據?

function loadtooltip(obj, $user_id) { 
//AJAX 
var req = Inint_AJAX(); 
req.onreadystatechange = function() { 
     if (req.readyState==4) { 
      if (req.status==200) { 
       displaytooltip(obj, req.responseText); 
      } 
     } 
}; 

req.open("POST", "http://127.0.0.1/cakeplate/tooltips/tooltip/", true); 
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
req.send($user_id); 

};

該控制器

<?php 
Class TooltipsController extends AppController{ 
var $name = 'Tooltips'; 
var $uses = array('Reply','User'); 
var $component = array('RequestHandler','Javascript','Ajax'); 
var $layout = 'tooltip'; 


function tooltip($user_id=NULL){ 

       if(!empty($user_id)){ 
        $tooltip = $this->Reply->User->findById($user_id); 
        $this->set('tooltip',$tooltip); 
       } 

} 
} 
?> 

我需要有人幫我修改後的代碼

回答

1

你此刻在控制器做的話,你就不是我能得到USER_ID ,因爲它是一個通過http的GET方法傳遞的var。

如果你把這個URL,例如GET請求這個變量將是訪問: http://example.com/cakeplate/tooltips/tooltip/1,其中1人是你的$ user_id的。

如果你發送請求的POST,您可以在此變種$這個 - >數據 這樣,您就能夠處理基於您傳遞到控制器的VAR請求訪問的值。

另一個問題,你將面臨,這個控制器將需要渲染一個視圖,所以我建議你看看http://book.cakephp.org/view/1238/REST,在那裏你可以看到如何創建一個路線,使控制器解析另一個視圖,它是一個不同的自定義佈局,就像json(在這種情況下我建議的那樣),然後您可以在此視圖中僅顯示json值。

最後,但同樣重要,我會建議你使用jQuery做的JavaScript的一部分,我認爲它會更容易,你可以在http://api.jquery.com/jQuery.get

檢查
相關問題