2013-03-02 2 views
0

Итак, я пытаюсь создать мобильное приложение для Android, и я использую CakePHP в качестве моего сервера. Мне не понадобятся какие-либо HTML-представления, я буду отвечать только объектами JSON.Как проверить вывод данных JSON в CakePHP?

Я принял взглянуть на http://book.cakephp.org/2.0/en/core-libraries/components/request-handling.html#RequestHandlerComponent и что я создал это:

class LocationsController extends AppController 
{ 
    public $helpers = array('Html', 'Form'); 
    public $components = array('RequestHandler'); 
    function index() 
    { 
     $locations = $this->Location->getNearest(); 
     $this->set(compact('locations')); 
     $this->set('_serialize', array('locations')); 
    } 
} 

и я добавил это к моему routes.php: не отображается

Router::mapResources('locations'); 
Router::parseExtensions('json'); 

Ничего, когда я запускаю это кроме стиля макета CakePHP по умолчанию. Если я удалю файл представления index.ctp, я получаю сообщение об ошибке, что он не может найти файл вида. Зачем нужен файл вида? Я думал, что с сериализованным подходом он не нуждается в представлении. Я попытался посмотреть в консоли разработчика Google Chrome, и нет ответа, который содержит объект JSON. Однако MySQL отлично справился.

ответ

0

Помещенный $this->render(false); между

public $components = array('RequestHandler'); 

и

function index() 

Теперь он не требует файл index.ctp больше.

Для получения дополнительной информации см. this link.

+0

Ошибка: ошибка синтаксиса, неожиданный '$ это' (T_VARIABLE), ожидая функции (T_FUNCTION). В любом случае, это просто уничтожит весь вывод в браузере. Я не смогу проверить или увидеть мои данные JSON, если я использую render (false). –

+1

О, чертовы. Да, ты прав. Я подозревал, что это сделало бы эту работу, но это с данными JSON. Тогда я не могу вам помочь, извините. – JorickL

+0

Спасибо тем же =). Я использовал public $ viewClass = 'Json'; и, похоже, он сделал трюк в конце браузера. Однако я не тестировал его на Android-конце. Я просто беспокоюсь о том, как Android получит данные. Я не хочу, чтобы он получал содержимое html, css или javascript. –

0

Я просто сделал то же самое, используя REST API, так как хочу получить ответ в JSON. Что я сделал, так это то, что я пользовался клиентом расширенного отдыха Chrome. В этом я сделал запрос на свой сервер localhost с помощью соответствующего метода GET, и он преуспел.

как: GET /users/view/103.json

вы получите ответ, как:

{"users":{"User":{"id":"103","username":"abc","password":"xyz", 
"email-id":"[email protected]"}}} 
Смежные вопросы