8

私はコントローラー関数を呼び出しています:

$.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); ?>

ただし、アクションはレイアウトコンテンツ(ヘッダー、フッター、ナビゲーション)を含むページ全体を返します。

ここで何が欠けていますか?レイアウトコンテンツなしでJSONデータのみを返すにはどうすればよいですか?

4

4 に答える 4

32

設定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)
    )));
}
于 2014-07-10T20:43:24.960 に答える
10

このようなレイアウトを無効にする必要があります

$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
}
于 2012-10-18T20:15:40.027 に答える
7

マニュアルでJsonViewについて読んでください。

于 2012-10-19T06:05:06.940 に答える
1

次のいずれかを試して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.'
    ));
}
于 2015-06-24T11:50:55.670 に答える