3

レイアウトを読み込もうとしましたajaxが、毎回読み込み中のデフォルトのレイアウトです。

public function getByZone() {
        $this->layout = 'ajax';    
        ...
    }

したがって、コンボ ボックスには、「ajax の回答」ではなく、すべてのdefault.ctpが含まれています。

Webで見つけた多くの解決策を試しましたが、何も機能しません。

でレイアウトを無効にする$this->layout = false, $this->render('my_view_name', false), $this->autoRender = false,

AppControllerにbeforeRenderがないかどうかを確認してください...

解決策があれば、ご協力いただきありがとうございます。

4

5 に答える 5

1

追加$this->autoRender = false;

于 2013-12-07T22:37:44.653 に答える
0

ページにリダイレクトがある可能性があります。「getByZone」機能にアクセスできることを確認するか、APP にログインする必要がある場合

于 2014-01-23T05:06:06.277 に答える
0

私は Cakephp 2.0 を持っていて 2.4 にアップグレードしましたが、この質問に出くわしたとき、同じ問題があると確信しました。結局着替えました

$this->render('ajax', 'success');

$this->render('/Layouts/ajax', 'ajax');

しかし、それだけではありません!さらに、おそらく私が物事を行っていたいくつかの厄介な方法のせいで、私は変わりました

$this->request->params['url']

$this->request->query

つまり、この URL http://myurl.com/controller/action?bozopants=1の http パラメータ bozopants は、コントローラで $this->request->query['bozopants'] としてアドレス指定されるようになりました。

もちろん、これはかなり厳格な Auth 制限のあるコントローラーで発生しています。

于 2013-12-07T18:41:17.623 に答える
0

CakePHP 2.5.4 では、次の行を使用して JSON 出力のみをレンダリングしています。

   $this->set("data", $myData);
// $this->render(string $view, string $layout);
   $this->render(false, "ajax"); // Not using a view, only using a layout "ajax".

「ajax」レイアウトでは、変数 $data は viewVariable として使用できます。

于 2014-09-29T12:45:48.730 に答える