2011-07-02 26 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

检查
相关问题