2012-02-28 45 views
2

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

(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)I创建单独的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> 

我没有从cakephp后端得到任何响应,当我打开h (3)中提到的tml文件。我试着用萤火虫,也没有显示任何反应。

然而,当我试图从我的浏览器访问CakePHP的用户索引页面中,JSON是漂亮的一面展示出来:

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

有人能帮助我吗?

回答

2

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

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

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

+0

Omg。你真了不起。我是一个愚蠢的比利!我应该把html文件放在wamp服务器上。非常感谢 – madi 2012-02-28 18:12:02