3

これは明らかなはずですが、インターネット上で役立つものや更新されたものは見つかりませんでした。

ビューのコンテンツと CakePHP コントローラーから実行する JS コードを取得する ajax でリクエストを実行しようとしています。

リクエストは次のとおりです。

  $.ajax({
    url: '/alarm/fetchGadgetsComponent',
    type: "POST",
    cache: false,
    dataType: 'json',
    success: function (data) {
       console.log(data);
    }
 });

PHP クラスは次のようになります。

class AlarmController extends AppController {
    public $uses = false;
    public $components = array('RequestHandler');
    public function index() {

    }


    public function fetchGadgetsComponent()
    {
        if ($this->request->is('Ajax'))
        {
            $this->autoRender = false;
            $this->layout = 'ajax';

            $html = $this->render('ajax\widgetsPanel');
            $js = $this->render('ajax\widgetsPanel.js');

            echo json_encode(array('html' => $html,'js' => $js));
        }
    }
}

$htmlまず、最初のレンダリングは、変数ではなく画面にレンダリングするだけです。次に、別の方法で js ファイルを取得するにはどうすればよいですか? (render メソッドは .ctp ファイルを検索するため、明らかにこれを目的としたものではありません)、それらを json 式として一緒に解析するにはどうすればよいですか?

ありがとうございました

4

2 に答える 2

0

json_encode は、配列やその他の php 変数を有効な JSON に変更する php 関数であることを知っています。そのため、このメソッドを使用して javascript ファイルのコンテンツを取得し、それを JSON に変更することはできません。 :

class AlarmController extends AppController {
    public $uses = false;
    public $components = array('RequestHandler');
    public function index() {

    }


    public function fetchGadgetsComponent()
    {
        if ($this->request->is('Ajax'))
        {
            $this->autoRender = false;
            $this->layout = 'ajax';

            $html = $this->render('ajax\widgetsPanel');

            $this->ext = '.js';
            $js = $this->render('ajax\widgetsPanel.js');

            echo json_encode(array('html' => $html,'js' => $js));
        }
    }
}

ソースコードへのリンクfile_get_contentより良い方法は、js ファイルの関数 だと思います。ajaxリクエストをより適切に実行するための2番目はjsonViewです

于 2013-10-19T20:47:27.080 に答える