我的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()方法;它似乎使用先前存储的第一次调用的结果。
我希望有人可以帮助我, 谢谢,
鲁迪
答案 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();