我尝试将数据从ajax发送到cakephp cotroller
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);
}
}
}
?>
我需要有人帮我修改代码
答案 0 :(得分:1)
你在控制器中执行的方式,你将无法获得user_id,因为它是通过http的GET方法传递的var。
如果您为此网址发出GET请求,则可以访问此变量: http://example.com/cakeplate/tooltips/tooltip/1 其中1将是您的$ user_id。
如果您将请求作为POST发送,则可以访问此var $ this-&gt;数据中的值 这样,您就可以根据传递给控制器的var处理请求。
你将面临的另一个问题是这个控制器需要渲染一个视图,所以我建议你看一下http://book.cakephp.org/view/1238/REST,在那里你可以看到如何创建一个让控制器解析的路由另一个视图,它是一个不同的自定义布局,如json(我在这种情况下建议的那个),然后你可以在这个视图中只显示json值。
最后,但也很重要,我建议您使用jQuery来执行javascript部分,我认为它会更容易,您可以在http://api.jquery.com/jQuery.get
查看它