アクションに異なるロジックがあるのは、要求がAJAXであるかどうかによって異なります。
(AJAXログインの場合、ログインが成功した後はリダイレクトする必要はありません。通常のログインではそうではありません)。
ヘッダーのチェックの隣には何がありますかX-Requested-With: XMLHttpRequest
フラグなどはありますか?コントローラ内で、リクエストがXMLHTTPであるかどうかを知る最善の方法(ZF)
答えて
This method作品。
$this->getRequest()->isXmlHttpRequest() //returns true if is XHR
smack0007により詳細な方法は、正確であることを保証するが、接続は常にヘッダを設定ライブラリによって作製されている場合、上記の方法は、微細です。おそらくパブリックAPIには適していません。
私は通常、私のアプリの2つのエントリーポイントを作成します:/index.phpと/ajax/index.phpです。彼らはどちらも共通のブートストラップを共有していますが、ajax.phpではこのリクエストがajaxリクエストであると言うためにFrontControllerパラメータを設定しました。
これで、Requestオブジェクトでチェックインできます。ほとんどjQueryとYUIを含む主要なJSライブラリの全て(ない場合)によって設定されているヘッダをチェックすることにより
if($this->getRequest()->getParam('ajax')) {
// Ajax request
} else {
// Normal request
}
Zend_Controller_Request_Httpクラスには、isXmlHttpRequest()というメソッドがあり、リクエストがJavascript(ajax)からのものかどうかを示す必要があります。
(練習コーディングのうちけど)は、おそらくあなたのアクションでこのようなものになるだろう:
if($this->getRequest()->isXmlHttpRequest()){
//is ajax
}
else{
//regular request
}
それらを区別するための信頼できる方法はありません。ブラウザはXMLHttpRequestと通常のアクセスの両方でほぼ同じHTTPコードを使用します。
ブラウザがカスタムヘッダーを処理し、プロキシの干渉が発生する可能性があるため、X-Requested-Withヘッダーをすべて信頼することはできません。
代わりに、私はパラメータ(?ajax = 1)、またはsmackの提案などの一意のURLを生成する他のメソッドを使用します(これは実際に探しているisXmlHttpRequestのすべてです)。
- 1. HTTPリクエストがBOTであるかどうかを知る方法
- 2. Kohanaリクエストが内部リクエストかどうかを知る方法?
- 3. node.jsでリクエストがhttpかhttpsかどうかを知る方法
- 4. オブジェクトがnullであるかどうかを確認する最善の方法と最も速い方法
- 5. MySQLndがアクティブドライバであるかどうかを知る方法?
- 6. 現在のリクエストURLがコントローラのインデックスであるかどうかを調べる
- 7. ポイントがアンドロイドのポリゴンの内側にあるかどうかを知る方法
- 8. ライブポイントがストリーム内のどこにあるかを知る方法?
- 9. イメージがPHPで有効かどうかを確認する最善の最速の方法は何ですか?
- 10. PHPでコントローラへのXMLhttp要求を処理する方法
- 11. PHP/MySQL mysql_fetch_array()の最初のレコードにあるかどうかを知る方法
- 12. 私のアプリケーションが管理者であるかどうかを知る方法
- 13. ウェブページの言語が英語であるかどうかを知る方法?
- 14. ユーザーがファイルをアップロードできるかどうかを確認する最善の方法は何ですか?
- 15. どの検索バーがアクティブであるかを知る方法?
- 16. クラス内のすべての変数がnullであるかどうかを確認する最善の方法は何ですか?
- 17. PHP変数が参照であるかどうかを知る方法?
- 18. UIがX時間アイドルであるかどうかを知る方法?
- 19. メソッドがPolicy Injection内のプロパティであるかどうかを判断する最善の方法は何ですか?
- 20. HSSF POI:セル内のデータがタイプ日付であるかどうかを知る方法?
- 21. Excel 2003がインストールされているかどうかを検出する最善の方法は何ですか?
- 22. iOSアプリ内購入 - ユーザーが購入したかどうかを確認する最善の方法
- 23. SourceSafeバックアップスクリプト - 最善の方法ですか?
- 24. Djangoマルチユーザログイン - 最善の方法ですか?
- 25. 文字列内の最初の5文字がどれかを知る方法
- 26. モデル内のmethod_missingからセッションにアクセスする最善の方法
- 27. アプリケーションサーバーでコードが実行されているかどうかを検出する最善の方法java
- 28. ユーザーオープンメールかどうかを知る方法はありますか?
- 29. Xulウィンドウが最小化されているかどうかを知る方法?
- 30. ResourceRequestがAJAXリクエストであるかどうかを調べる
ああ、ほとんど私にそれを打つ。さらに詳しい説明のためにアップヴォートを加えました(さらに注意点) –
これは、X-Requested-Withのヘッダーをチェックしています:XMLHttpRequestです。 – bobince
本当ですが、これらのヘッダーを確実に設定するJavaScriptフレームワークを使用している場合(そしてJSライブラリのJSライブラリのみ)、メソッドに頼ることができます。 zendのドキュメントでは、たとえば、このメソッドは "Prototype/Script.aculo.usで動作する必要があります。あなたの選択のフレームワークで少しテストすれば十分です。カスタムJS/Ajaxが使用されている場合でも、私は誰かがこのメソッドで問題に遭遇する可能性があることに同意します。 –