質問

私は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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top