アクションに異なるロジックがあるのは、要求が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. アプリ内にトップヘッダーバーがあるかどうかを知る方法
- 6. リポジトリがサブモジュールであるかどうかを知る方法
- 7. Excelファイルが空であるかどうかを知る方法#
- 8. Selectクエリが空であるかどうかを知る方法
- 9. DNSサーバがオープンリゾルバであるかどうかを知る方法?
- 10. MySQLndがアクティブドライバであるかどうかを知る方法?
- 11. 範囲が空であるかどうかを知る方法?
- 12. 現在のリクエストURLがコントローラのインデックスであるかどうかを調べる
- 13. ポイントがアンドロイドのポリゴンの内側にあるかどうかを知る方法
- 14. AngularJSコントローラがフォーム内にあるかどうかを確認する方法
- 15. ライブポイントがストリーム内のどこにあるかを知る方法?
- 16. イメージがPHPで有効かどうかを確認する最善の最速の方法は何ですか?
- 17. アキシャルで保留中のリクエストがあるかどうかを知る
- 18. データがリスト内のdata.frameかどうかを知る方法
- 19. タップがビュー内か外かどうかを知る方法
- 20. PHPでコントローラへのXMLhttp要求を処理する方法
- 21. C#でJPEG画像がプログレッシブであるかどうかを知る方法
- 22. PHP/MySQL mysql_fetch_array()の最初のレコードにあるかどうかを知る方法
- 23. アプリがフォアグラウンドにあるかどうかを知る方法は?
- 24. ユーザーがファイルをアップロードできるかどうかを確認する最善の方法は何ですか?
- 25. XMLHTTPリクエストが
- 26. ウェブページの言語が英語であるかどうかを知る方法?
- 27. ネットワーク状態がiOSのWiFiホットスポットであるかどうかを知る方法
- 28. Xcodeのバージョンがベータ版であるかどうかを知る方法は?
- 29. 2つの条件が真であるかどうかを知る方法
- 30. 私のアプリケーションが管理者であるかどうかを知る方法
ああ、ほとんど私にそれを打つ。さらに詳しい説明のためにアップヴォートを加えました(さらに注意点) –
これは、X-Requested-Withのヘッダーをチェックしています:XMLHttpRequestです。 – bobince
本当ですが、これらのヘッダーを確実に設定するJavaScriptフレームワークを使用している場合(そしてJSライブラリのJSライブラリのみ)、メソッドに頼ることができます。 zendのドキュメントでは、たとえば、このメソッドは "Prototype/Script.aculo.usで動作する必要があります。あなたの選択のフレームワークで少しテストすれば十分です。カスタムJS/Ajaxが使用されている場合でも、私は誰かがこのメソッドで問題に遭遇する可能性があることに同意します。 –