使用相同的URLRequest时出现URLLoader.load()问题

时间:2010-06-08 18:47:20

标签: actionscript-3 events event-listener urlloader

我的eventListeners与URLLoader有问题,但是这个问题发生在IE中,而不是在FF中。

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中才是这种情况。发生的事情是我调用我的getUploadURL,我确保服务器发送一个事件,该事件将导致Event.COMPLETE,因此执行getBaseURL,并删除侦听器。如果我调用getUploadURL方法并输入错误的路径,我不会得到Event.COMPLETE但是其他一些事件,并且不应该执行getBaseURL。

这是FireFox中的正确行为。在IE中,看起来load()方法实际上并没有调用服务器,它直接跳转到Event.COMPLETE的getBaseURL()。在分配新的URLLoader之前,我检查了_loader上的willTrigger()和hasEventListener(),事实证明该事件已被很好地删除。

我希望我有意义,我简化了我的代码。总而言之:在FireFox中它运行良好,但在IE中,第一个调用将起作用,但第二个调用不会真正调用.load()方法;它似乎使用先前存储的第一次调用的结果。

我希望有人可以帮助我, 谢谢,

鲁迪

2 个答案:

答案 0 :(得分:1)

可能已缓存请求。

var hdr:URLRequestHeader = new URLRequestHeader("pragma", "no-cache");
....
request.requestHeaders.push(hdr);

答案 1 :(得分:1)

尝试在网址中添加随机变量以防止缓存。

var url:String = getPath();
//if path already contains some variables, replace ? with &
url += "?random=" + Math.random(); 
request.url = getPath();