我有一个PRIMEFACES对话框,其中我使用onCloseUpdate属性在对话框关闭时重新呈现对话框的所有内容。问题是,当我关闭对话框,并(快速)点击再次打开它时,我看到onCloseUpdate还没有完成重新渲染对话框的内容,并且旧内容显示半秒/秒周期。
下面是使对话框可见的命令链接:<h:commandLink id="area1" onclick="dlg.show()">
...
</h:commandLink>
,下面是对话:
<ppctu:dialog onCloseUpdate="... here is all the component ids from the dialog content ..." modal="true" widgetVar="dlg">
是否有一些方法等待onCloseUpdate渲染完成?
Thanks in advance
使用同步ajax调用。同步AJAX(实际上是sajax——同步Javascript和XML)是模态的,这意味着Javascript将停止处理您的程序,直到从服务器获得结果。在处理请求时,浏览器实际上被冻结了。
function getFile(url) {
if (window.XMLHttpRequest) {
AJAX=new XMLHttpRequest();
} else {
AJAX=new ActiveXObject("Microsoft.XMLHTTP");
}
if (AJAX) {
AJAX.open("GET", url, false); //notice the 'false' attribute
AJAX.send(null);
return AJAX.responseText;
} else {
return false;
}
}
如果你使用jQuery,那么把async:false
在你的ajax调用var fileFromServer = getFile('http://somedomain.com/somefile.txt');