我发现这是一个常见问题,但谷歌搜索后似乎没有明显的解决方案。
在我的页面中,一些用户操作会触发 AJAX 请求。使用 YUI 2.X,代码如下:
Connect.asyncRequest("POST", url,
{
'failure' : function() { alert('failed'); },
'success': function() { doSuccess(); },
'scope": this,
},
dataStr);
当 AJAX 请求失败时,我想弹出一个对话框(不一定是警报)来显示失败。但是,如果 AJAX 请求需要几秒钟,并且我点击“刷新”按钮重新加载页面,对话框总是弹出。情况不妙。所以我想在重新加载时抑制对话框。
重新加载页面时,将使用对象 {status: 0, statusText: 'communication failure'} 调用“失败”回调。这与其他类型的连接失败没有区别。所以,我无法根据回调对象判断是否是卸载阶段。
目前,我的解决方法是监听“beforeunload”事件。
Event.on(window, 'beforeunload', function() { isUnloading = true; });
失败回调根据 isUnloading 值检查是否显示对话框。
这可行,但“beforeunload”事件不是标准的。有没有更好的方法来处理这种情况?
谢谢