私はCakePHPでAjaxを使用しようとしています。CakePHPでjquery ajaxリクエストを実行するにはどうすればよいですか?
私は一連のボタンが付いたページを持っています - これらのいずれかをクリックすると、現在のページに特定の内容が表示されます。ページがリロードされないことは重要です。映画が表示され、ムービーをリセットしたくないからです。
それぞれにそれぞれ異なる内容のボタンがいくつかあります。このコンテンツは潜在的にかなり大きいので、必要になるまで読み込む必要はありません。
通常、jQueryでこれを行いますが、CakePHPで動作させることはできません。
は、これまでのところ、私が持っている:私は新しいが欲しいところです「filmNotebook」と呼ばれるdiv要素があり、この下に
$this->Html->link($this->Html->image('FilmViewer/notes_link.png', array('alt' => __('LinkNotes', true), 'onclick' => 'showNotebook("filmNotebook");')), array(), array('escape' => false));
:ビューで
、ボタンコントロールは、このようなものです表示するコンテンツ。
はdiv要素に示さなるだろう平野コンテンツを生成するためにfunction showNotebook(divId) {
// Find div to load content to
var bookDiv = document.getElementById(divId);
if(!bookDiv) return false;
$.ajax({
url: "ajax/getgrammar",
type: "POST",
success: function(data) {
bookDiv.innerHTML = data;
}
});
return true;
}
が、私はroutes.phpの中で次のように設定します。(ウェブルート/スクリプトで)私のfunctions.jsファイルで
私はこの機能を持っています:films_controller.phpで
Router::connect('/ajax/getgrammar', array('controller' => 'films', 'action' => 'getgrammar'));
、機能getgrammarは:
function getgrammar() {
$this->layout = 'ajax';
$this->render('ajax');
}
レイアウトファイル
を、現在のビューajax.ctpだけです::ちょうど持って
<div id="grammarBook">
Here's the result
</div>
問題であり、私はボタンをクリックしたときに、私はデフォルトのレイアウトを取得すること(ページが私のページ内に表示されますようなので、それはです)その中に映画のインデックスページがあります。それはfilms_controller.phpで正しいアクションが見つからないかのようです。
私はCakePHPのマニュアル(http://book.cakephp.org/view/1594/Using-a-specific-Javascript-エンジン)。
私は間違っていますか?これを行うためのより良い方法の提案がありますが、今後の参考のためにAjaxがどのように機能するかを知りたいと思います。
誰もが提供できるお手伝いをありがとう。
ありがとう、私はそれを確認します。ルートは実際にはちょうど一時的です - 文法はおそらく最終的に独自のコントローラを持つでしょう - 私はクライアントからの情報を待っています! – Sharon
ありがとうございます - 私はそれを解決!あなたが提案したように、さまざまなビットの名前が変更され、デバッグが容易になりました。私は最終的にURLの代わりに間違ったURLに投稿していることを知った: "ajax/getgrammar"、私はURLが必要: "/ ajax/getgrammar"。あなたの助けをもう一度ありがとう! – Sharon