項目URLLoader.load()の問題と同じURLRequestのを使用している場合
-
25-09-2019 - |
質問
私はURLLoaderクラスと私のイベントリスナの問題を持っていますが、この問題はないFFで、IEで発生します。
public function getUploadURL():void {
var request:URLRequest = new URLRequest();
request.url = getPath();
request.method = URLRequestMethod.GET;
_loader = new URLLoader();
_loader.dataFormat = URLLoaderDataFormat.TEXT;
_loader.addEventListener(Event.COMPLETE, getBaseURL);
_loader.load(request);
}
private function getBaseURL(event:Event):void {
_loader.removeEventListener(Event.COMPLETE, getBaseURL);
}
問題は、私は一度、少なくともコードを実行した後、私のgetBaseURLが自動的に実行されますということですが、それはIEのみの場合です。何が起こるかというと、私は確信して、サーバーがgetBaseURLが実行されますので、Event.COMPLETEになり、イベントを送信し、リスナーが削除されていることを確認し、私は私のgetUploadURLを呼んでいます。私はgetUploadURLメソッドを呼び出すと、間違ったパスを入れた場合、私はEvent.COMPLETEが、いくつかの他のイベントを得ることはありません、とgetBaseURLは、実行すべきではありません。
これはFirefoxで正しく動作です。 IEでは、それはそれはEvent.COMPLETE用)getBaseURL(に直接ジャンプし、実際にサーバを呼び出すことはありません。load()メソッドのように見えます。私は、新しいURLLoaderクラスを割り当てる前に_loaderのwillTrigger()とhasEventListener()をチェックし、それはイベントがうまく削除されましたが判明します。
私は私のコードを単純化し、私は理にかなって願っています。すぐに要約する:Firefoxでは、それはうまく動作しますが、IEで、最初の呼び出しが動作しますが、2番目の呼び出しは、本当に.LOAD()メソッドを呼び出すことはありません。最初の呼び出しから、以前に保存された結果を用いるようです。
私は誰かが助けに私を喜ばことを願って、
、ありがとうルディ
解決
キャッシュを防ぐために、URLにランダムな変数を追加してみてください。
var url:String = getPath();
//if path already contains some variables, replace ? with &
url += "?random=" + Math.random();
request.url = getPath();
他のヒント
おそらく要求がキャッシュされています。
var hdr:URLRequestHeader = new URLRequestHeader("pragma", "no-cache");
....
request.requestHeaders.push(hdr);