簡體   English   中英

如何從CakePHP 2.2控制器返回JSON?

[英]How to return JSON from a CakePHP 2.2 controller?

我正在調用控制器功能:

$.get("http://localhost/universityapp/courses/listnames", function(data){
    alert("Data Loaded: " + data);
});

在我的控制器中:

public function listnames() {
    $data = Array(
        "name" => "Sergio",
        "age" => 23
    );
    $this->set('test', $data);
    $this->render('/Elements/ajaxreturn'); // This View is declared at /Elements/ajaxreturn.ctp
}

在那個視圖中:

<?php echo json_encode($asdf); ?>

但是,該操作將返回包括布局內容(頁眉,頁腳,導航)的整個頁面。

我在這里想念什么? 如何僅返回不包含Layout內容的JSON數據?

設置autoRender=false並返回json_encode($code) :-

public function returningJsonData($estado_id){
    $this->autoRender = false;

    return json_encode($this->ModelBla->find('first',array(
        'conditions'=>array('Bla.bla_child_id'=>$estado_id)
    )));
}

您需要像這樣禁用布局

$this->layout = null ;

現在您的動作將變為

public function listnames() {
    $this->layout = null ;
    $data = Array(
        "name" => "Sergio",
        "age" => 23
    );
    $this->set('test', $data);
    $this->render('/Elements/ajaxreturn'); // This View is declared at /Elements/ajaxreturn.ctp
}

在手冊上閱讀有關JsonView的信息。

您可以嘗試以下任何一種方法來返回json響應(我在這里以失敗案例返回json響應):

public function action() {
    $this->response->body(json_encode(array(
        'success' => 0,
        'message' => 'Invalid request.'
    )));

    $this->response->send();
    $this->_stop();
}

要么

public function action() {
    $this->layout = false;
    $this->autoRender = false;
    return json_encode(array(
        'success' => 0,
        'message' => 'Invalid request.'
    ));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM