Cakephp как бэкэнд для мобильного сайта - PullRequest
2 голосов
/ 28 февраля 2012

Я сейчас создаю мобильное приложение. Я использую cakephp2.0 в качестве бэкэнда для обработки запроса и ответа. Я бы хотел, чтобы cakephp обработал запрос и отправил ответ json обратно в мобильное приложение (приложение craft).

(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>

Я не получаю никакого ответа от бэкэнда cakephp, когда открываю html-файл, упомянутый в (3). Я попытался использовать firebug, но ответа тоже не было.

Однако, когда я попытался получить доступ к индексной странице пользователей CakePHP из моего браузера, json отображался хорошо:

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

Может ли кто-нибудь мне помочь?

1 Ответ

2 голосов
/ 28 февраля 2012

В вашей настройке нет ничего плохого. Я знаю, это звучит глупо, но правильно ли вы включили jQuery в свой тестовый HTML и успешно ли он запускает запрос?

Еще одна вещь, которую нужно проверить - где вы размещаете свой тестовый HTML-файл? Он подается с веб-сервера или просто сидит на вашем рабочем столе? Если он не обслуживается, вполне вероятно, что JavaScript отключен и не работает.

Кроме того, isAjax устарела в CakePHP 2. Вместо этого используйте this->request->is( 'ajax' ) для проверки Ajax. Это не должно повлиять на вашу проблему.

...