我已经使用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);
}
三江源
答案 0 :(得分:1)
它不会渲染您的视图文件。你的控制器只是在这里返回json数据。
只需在控制器代码中添加$this->autoRender = false;
即可。
希望这有帮助。