1

我已经使用 cakephp 设置了我的第一个基于 API 的系统。我已经在浏览器中进行了设置,例如: domain.com/cms/blogs 返回 JSON 如下:

[{"id":"2","name":"示例新闻项目 002","slug":

ETC

但是,一旦我通过 AJAX 调用相同的 URL,代码就会出现

{"blogs":[{"id":"2","name":"Sample News Item 002","slug":ETC

我假设这是因为在我看来我已将代码设置为

echo json_encode($blogs);

但是当它通过 JAX 调用时,它会使用不同的视图吗?这是正确的,如果是这样,解决方案是什么,所以 ajax 返回与我的浏览器视图相同?

我只是尝试在app/View/Blogs/json/index.ctp中添加相同的视图代码( echo json_encode($blogs);),但似乎没有什么不同。

// 控制器代码

    public function index($slug = NULL) 
    {
    $this->layout = null;
    $this->response->type('json');

        $cond = array('Blog.online' => 1);

        if(isset($slug))
        {
            $cond[] = array('Blog.slug' => $slug);
            $this->set('slug', $slug);
        }


        $blogs = $this->Blog->find('all', array('conditions' => $cond));
        $blogs = Set::extract('/Blog/.', $blogs);
        $this->set(array(
            'blogs' => $blogs,
            '_serialize' => array('blogs')
        ));

        return json_encode($blogs);
}

谢谢

4

1 回答 1

1

它不会渲染您的视图文件。您的控制器只是在这里返回 json 数据。

只需添加$this->autoRender = false;您的控制器代码。

希望这可以帮助。

于 2013-08-27T04:59:41.800 回答