0

所以我正在尝试创建一个 Android 移动应用程序,并且我使用 CakePHP 作为我的服务器端。我不需要任何 HTML 视图,我只会使用 JSON 对象进行响应。

我查看了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 的表现非常好。

4

2 回答 2

0

放在$this->render(false);中间

public $components = array('RequestHandler');

function index()

现在它不再需要 index.ctp 文件了。

有关更多信息,请参阅此链接

于 2013-03-02T19:27:36.363 回答
0

我只是使用 REST API 做了同样的事情,因为我想要 JSON 中的响应。我所做的是我使用了 Chrome 高级休息客户端。我使用适当的 GET 方法向我的本地主机服务器发出请求,并且它成功了。

像:GET /users/view/103.json

你会得到如下响应:

{"users":{"User":{"id":"103","username":"abc","password":"xyz",
 "email-id":"abc@xyz.com"}}} 
于 2013-08-18T18:48:25.633 回答