【问题标题】:RESTful cakephp API - Different returning JSON - Browser vs AJAXRESTful cakephp API - 不同的返回 JSON - 浏览器与 AJAX
【发布时间】:2013-08-27 04:17:49
【问题描述】:

我已经使用 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);) 但它没有好像没什么区别。

// 控制器代码

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

谢谢

【问题讨论】:

  • 你能把你的控制器代码放上去吗
  • 是的,已添加。谢谢你

标签: json api cakephp


【解决方案1】:

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

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

希望这会有所帮助。

【讨论】:

  • 啊...爱它是一件容易的事。谢谢你
猜你喜欢
  • 2013-02-28
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多