Cakephp作为移动网站的后端

时间:2012-02-28 17:39:55

标签: php cakephp-2.0

我目前正在创建移动应用程序。我使用cakephp2.0作为我的后端来处理请求和响应。我希望cakephp处理请求并将json响应发送回移动应用程序(应用程序工艺)。

(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)我创建了单独的html文件,它不在cakePHP文件夹中来测试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文件时,我没有得到cakephp后端的任何响应。我尝试使用萤火虫,也没有显示任何反应。

然而,当我尝试从浏览器访问cakephp用户索引页面时,json显示得很好:

[{"User":{"id":"1","name":"John","mobile_code":"+65","mobile number":"901111234"}}]

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您的设置没有任何问题。我知道这听起来很愚蠢,但是你是否已经在测试HTML中正确地包含了jQuery并且是否成功解除了请求?

要验证的另一件事是您在哪里托管测试HTML文件?是从网络服务器提供还是只是坐在桌面上?如果没有提供服务,javascript很有可能被禁用而且没有运行。

另外,isAjax is deprecated in CakePHP 2.而是使用this->request->is( 'ajax' )来测试Ajax。这不应该影响你的问题。