RESTful cakephp API - 不同的返回JSON - 浏览器与AJAX

时间:2013-08-27 04:17:49

标签: json api cakephp

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

  

[{“id”:“2”,“name”:“Sample News Item 002”,“slug”:

然而,只要我通过AJAX调用相同的URL,代码就会以

的形式出现

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

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

echo json_encode($blogs);

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

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

// CONTROLLER CODE

    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);
}

三江源

1 个答案:

答案 0 :(得分:1)

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

只需在控制器代码中添加$this->autoRender = false;即可。

希望这有帮助。