次のように定義されたブートストラップ (2.3.2) モーダルがあります。
<div id="myModal" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>Modal header</h3>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<a href="#" class="btn">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
次のようなボタンもあります。
<button type="button" data-toggle="modal" data-remote="index.php/mycontroller/methodname" data-target="#myModal">Launch modal</button>
コントローラーのメソッド:
public function methodname() {
$this->load->view('modalbody');
}
ブラウザを使用して直接アクセスすると、 localhost/myproject/index.php/mycontroller/methodname に問題なく html を取得できますが、ボタンをクリックすると 500 internal server error が発生しました。これを修正する理由と方法
編集:モーダルが読み込まれると、HTML が「modal-body」内に挿入されたことがわかりません。また、(firefox + firebug を使用して) もう少し深く掘り下げたところ、内部エラーは「要求したアクションは許可されていません」でした。(Google chromeを使用している場合、詳細なエラーメッセージは表示されませんでした)これはcsrf_protectionと関係があります(これをtrueに設定しました)。つまり、このモーダルを呼び出すときに、csrf トークン名とハッシュを渡す必要があります (つまり、$this->security->get_csrf_token_name(); を使用して) が、ブートストラップ js ソース コード data-remote を見てきました。 jQueryロード関数を呼び出すだけです:
.load(this.options.remote)
データを受け入れずに、csrf トークン名とハッシュを渡すにはどうすればよいでしょうか????