2013-08-27 64 views
1

我已經使用cakephp設置了我的第一個基於API的系統。例如,我在瀏覽器中設置了它:domain.com/cms/blogs返回JSON,如下所示:RESTful cakephp API - 不同的返回JSON - 瀏覽器vs AJAX

[{「id」:「2」,「name」:「Sample News Item 002 」, 「彈頭」:

,但是隻要我把通過AJAX這個相同的URL的代碼來了,雖然作爲

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

我的屁股這是因爲在我看來我已經設置代碼爲

echo json_encode($blogs); 

但是,當它通過JAX調用它使用不同的視圖?這是正確的,如果是這樣的解決方案,所以阿賈克斯返回相同的瀏覽器視圖?

我只是試圖添加相同視圖代碼(回聲json_encode($博客);應用程序內/瀏覽/博客/ JSON/index.ctp但它似乎沒有有所作爲。

//控制器代碼

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

youp可以把你的控制器代碼 –

+0

是的,這已被添加。 Thankyou – sluggerdog

回答

1

這不是渲染你的視圖文件。你的控制器只是在這裏返回json數據。

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

希望這會有所幫助。

+0

啊......當它是一個簡單的愛時。謝謝 – sluggerdog