我目前正在创建一个移动应用程序。我使用cakeph2.0作为后端来处理请求和响应。我希望cakepp处理请求,并将json响应发送回移动应用程序(applicationcraft)。
(1) 对于用户控制器,我这样做:
public function index() {
$this->autoRender = false;
return new CakeResponse(array('body' => json_encode($this->User->find('all'))));
}
(2) AppController我做到了:
var $components = array('RequestHandler');
function beforeFilter() {
if ( $this->RequestHandler->isAjax() ) {
Configure::write ( 'debug', 0 );
}
}
(3) 我创建了一个不在cakeHP文件夹中的单独的html文件来测试json响应:
<body>
<a href="">jQuery</a>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
type: "get",
url: "http://localhost/jungle/users",
success: function(response){
alert(response);
}
});
});
</script>
</body>
当我打开(3)中提到的html文件时,我没有从cakepp后端得到任何响应。我试着使用firebug,但也没有反应。
然而,当我尝试从浏览器访问cakephp用户索引页面时,json显示得很好:
[{"User":{"id":"1","name":"John","mobile_code":"+65","mobile number":"901111234"}}]
有人能帮我吗?
您的设置没有任何问题。我知道这听起来很傻,但你是否在测试HTML中正确地包含了jQuery,它是否成功地触发了请求?
另一件需要验证的事情是,你在哪里托管测试HTML文件?它是从网络服务器上提供的,还是只是放在你的桌面上?如果没有提供服务,那么javascript很有可能被禁用并且没有运行。
顺便说一句,isAjax
在CakePHP 2中已被弃用。相反,使用this->request->is( 'ajax' )
来测试Ajax。不过,这不应该影响您的问题。