Come restituire JSON da un CakePHP 2.2 controller?

Sto invocando una funzione di controllo:

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

E nel mio Controller:

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
}

E in Vista:

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

Tuttavia, l’Azione di restituzione dell’intera pagina, incluso il Layout del contenuto (intestazione, piè di pagina, la navigazione).

Quello che mi manca qui? Come posso riportare solo i dati JSON senza il Layout del contenuto?

set $this->layout = null ; in listnames
Se si scrive che, come la tua risposta ti accetta come soluzione.
risposta inviato speranza è quella di lavorare per u

OriginaleL’autore sergserg | 2012-10-18

4 Replies
  1. 10

    È necessario disattivare il layout come questo

    $this->layout = null ;

    Ora la tua azione diventerà

    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
    }

    OriginaleL’autore Moyed Ansari

  2. 28

    Set autoRender=false e ritorno 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)
        )));
    }
    +1 La più semplice soluzione semplice per questa situazione.

    OriginaleL’autore Guilherme Ferreira

  3. 1

    Si può provare una delle seguenti operazioni per tornare json di risposta (ho preso in caso di errore qui per tornare json di risposta) :

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

    O

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

    OriginaleL’autore Anil kumar

Lascia un commento