リクエストがajaxかどうかを確認する必要があります。 $request->isXmlHttpRequest()
はうまくいきますが、実行中のどこかにリダイレクトがあると、このメソッドはfalseを返します。この場合、リクエストがajaxであるかどうかをどのように確認できますか? p.s. ajaxはjQueryによって開始されます
10
A
答えて
8
プロジェクト内の別のアプリケーションにリダイレクトされていない場合や、別の外部URIが最初のリクエストでisXmlHttpRequestがtrueの場合は、代わりにforwardを使用してください。 X-Requested-with
ヘッダの値に対して及びヘッダ(またはすべてのオリジナルヘッダ)いくつかのブラウザの実装で
よく、その方法チェックがリダイレクトされた要求(いずれかを命名するFF)から/上書き落とされます。
回避策として、リクエスト自体に変数を使用できます。既存のsf_format
インフラストラクチャを使用することは可能かもしれませんが、内部での動作に慣れていないため動作するかどうかはわかりません。
2
あなたが簡単な回避策が必要な場合は、私はあなたが「AJAX」という隠しフィールドを作成することができます投稿している場合
は、http://mywebsite.com/loadsomething.php?ajax=trueと
$isAjax = $request->getParameter('ajax');
のようなURLを使用するかを示唆しています。もちろん、これらはあなたの問題を永遠に解決することはできませんが、できるだけ早くこの問題が必要な場合は迅速な修正として機能します。
リダイレクトを1つしかサポートしない場合は、フラッシュ変数も作成できます。
そうしないと、あなたはsymfonyのソースコードを見ることができます:ライン518で
http://trac.symfony-project.org/browser/branches/1.4/lib/request/sfWebRequest.class.php
あなたはリクエストオブジェクトは、HTTPヘッダからアヤックスされる要求を識別し確認することができます。したがって、リダイレクト後に同じHTTPヘッダーが正しく設定されていない理由を調べる必要があります。
6
いくつかのJSライブラリはジュストスクリプトでこれを追加し、ヘッダにXmlHttpRequestの値を送信しません:
xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");
関連する問題
- 1. Zend Framework $ this-> _ request-> isXmlHttpRequest()IE7/8
- 2. Attachment_fu issue
- 3. as3crypto issue
- 4. History.js Issue
- 5. NVelocity Issue
- 6. CodeContracts issue
- 7. RubyTorrent Issue
- 8. SecurityAttribute.Unstrictted issue
- 9. pushViewController issue
- 10. onOptionsItemSelected issue
- 11. SessionInvalid issue
- 12. ScrollBar Issue
- 13. android:ksoap issue
- 14. List.Find()issue
- 15. PhysicsConnector issue
- 16. FindFiles:lappend issue
- 17. control.invoke()issue
- 18. Processing.Org:Modulo Issue
- 19. MANIFEST.MF issue
- 20. SMTPServerDisconnected issue
- 21. timelineScrubber issue
- 22. readdir()issue
- 23. Icefaces actionListener Issue
- 24. php simplehtmldom issue
- 25. Silverlight MouseLeave Issue
- 26. onclick issue in firefox
- 27. javascript window.parent issue
- 28. Javascript var hoisting issue
- 29. ExtJs Cascading-Combos Issue
- 30. Android GCM time_to_live issue
まさに、Firefoxは責任があります。 Operaで同じことがテストされ、うまく動作します。 – Dziamid
@Dziamid:ええ、バグがありましたが、FF4リリースを見逃してしまったので、修正される前に少なくとも4.1になるでしょう。また、他のブラウザがあるかもしれませんが、これは他のブラウザを認識していません。だから私はあなたの回避策でそれを慎重に演奏するだろう。実際には、可能であれば、方程式からすべてリダイレクトを削除する可能性があります。 – prodigitalson
私はそれに対して私の頭を禁止しているが、役に立たない。明らかに、カスタムリクエストパラメータをリクエストオブジェクトに設定しても、リダイレクトではわかりません。 sf_formatの使用は複雑です(symfonyはindexSuccess.sf_format.phpのような異なるテンプレートを探します)。 – Dziamid