亲爱的朋友。我在关闭窗口时遇到了问题。我正在调用这样的ajax调用
function callPreviewWindow(){
$.ajax( {
type : "GET",
url : "/ajax/eform/preview.do",
cache : false,
dataType : "text/html",
timeout: 40000,
beforeSend : function() {
showWaitingDialog("Please wait...");
},
error: function (xhr, err)
{
resolveAjaxError(xhr, err);
},
success : function(data) {
showPreviewWindow(data);
}
});
}
但是这个ajax调用执行需要花费更多时间,因此将超时时间增加到40000.并且它正常工作并显示以下窗口。
function showPreviewWindow(htmlData){
var previewWindow = new Ext.Window({
title: "E-Form View",
width:650,
id:'previewWindow',
autoHeight: true,
html: htmlData,
modal: true,
y: 150,
listeners: {
beforeclose: function () {
searchVisible = false;
}
},
buttons: [
{
text: 'Close', handler: function() {
previewWindow.close();
}
}
]
});
previewWindow.show(this);
}
但问题是当点击关闭按钮时,我可以关闭窗口。但showWaitingDialog(我在ajax调用函数中发送事件之前调用的)没有关闭。
请点击关闭按钮,帮我关闭它。
提前致谢。 沙迪亚
答案 0 :(得分:0)
看起来对话框和窗口没有链接。因此,在您的关闭处理程序中,您还需要关闭对话框以及窗口。如何执行此操作将取决于showWaitingDialog()函数正在执行的操作 - 但您可能需要存储对该方法中创建的对话框的引用,然后在您的close处理程序中调用对话框中的方法(如对话框) .close())也解雇了。这可能需要您修改showWaitingDialog()方法以返回对对话框的引用:
function showWaitingDialog() {
// dialog is created as normal
// add something like this
return dialog;
}
然后修改对话框启动器并关闭处理程序以使用存储的对话框:
// Dialog reference will be stored here
var dialog;
function callPreviewWindow(){
$.ajax( {
type : "GET",
url : "/ajax/eform/preview.do",
cache : false,
dataType : "text/html",
timeout: 40000,
beforeSend : function() {
// Store reference
dialog = showWaitingDialog("Please wait...");
},
error: function (xhr, err) {
resolveAjaxError(xhr, err);
},
success : function(data) {
showPreviewWindow(data);
}
});
}
function showPreviewWindow(htmlData){
var previewWindow = new Ext.Window({
title: "E-Form View",
width:650,
id:'previewWindow',
autoHeight: true,
html: htmlData,
modal: true,
y: 150,
listeners: {
beforeclose: function () {
searchVisible = false;
}
},
buttons: [{
text: 'Close', handler: function() {
previewWindow.close();
dialog.close();
}
}]
});
previewWindow.show(this);
}