Php 销毁jQuery UI中的对话框

Php 销毁jQuery UI中的对话框,php,jquery,jquery-ui,Php,Jquery,Jquery Ui,我正在使用一个系统,它打开一个对话框,基本上加载一个不断刷新的日志文件尾部。它工作得很好,但问题是当您关闭它时,它不会关闭对话框,因此它仍然会继续通过文件的尾部向您发送流量。显然,这不是一个好的做法 无论如何,到目前为止,我试图解决这个问题的代码如下 var $console = $('<div title="&nbsp; Server Console"></div>') .dialog({ height: 720, w

我正在使用一个系统,它打开一个对话框,基本上加载一个不断刷新的日志文件尾部。它工作得很好,但问题是当您关闭它时,它不会关闭对话框,因此它仍然会继续通过文件的尾部向您发送流量。显然,这不是一个好的做法

无论如何,到目前为止,我试图解决这个问题的代码如下

var $console = $('<div title="&nbsp; Server Console"></div>')
    .dialog({
         height: 720,
         width: 1000,
         resizable: false,
         autoOpen: false
    });

$(".consoleOpen").click(function(){
    $console.dialog('open').load("console.php?console="+this.name);
});

$console.bind('dialogclose', function(event) {
    $console.remove();
});

你已经提过了


$console.dialog(“销毁”)

您已经提到了

$console.dialog(“销毁”)

查看函数

您还需要使用clearInterval,否则只要页面打开,它就会一直运行

$console.bind('dialogclose', function(event) {
    $console.dialog('destroy').remove();
    clearInterval(refreshID);
});
看看函数

您还需要使用clearInterval,否则只要页面打开,它就会一直运行

$console.bind('dialogclose', function(event) {
    $console.dialog('destroy').remove();
    clearInterval(refreshID);
});
试试这个:

$console.bind('dialogclose', function(event) {
    $console.dialog( "destroy" );
});
或者读一下这个

试试这个:

$console.bind('dialogclose', function(event) {
    $console.dialog( "destroy" );
});

或者读这篇

我也有同样的问题

见:

  • (堆栈溢出问题)

  • (博客条目)


您需要调用
$('#dialog_id')。dialog(“destroy”)

我也遇到了同样的问题

见:

  • (堆栈溢出问题)

  • (博客条目)


您需要调用
$('#dialog_id')。dialog(“destroy”)

这里的问题不是对话框,而是通话的时间间隔

在这里声明
refreshId
如下操作

var window.refreshId = setInterval(function()
然后在删除对话框的地方,添加一个clearInterval

$console.bind('dialogclose', function(event) {
    $console.remove();
    clearInterval(window.refreshId);
});

这使变量
refreshId
成为全局变量,以便可以在代码中的其他位置访问它。然后,您可以使用它清除重复呼叫的间隔。

这里的问题不是对话框,而是呼叫的间隔

在这里声明
refreshId
如下操作

var window.refreshId = setInterval(function()
然后在删除对话框的地方,添加一个clearInterval

$console.bind('dialogclose', function(event) {
    $console.remove();
    clearInterval(window.refreshId);
});

这使变量
refreshId
成为全局变量,以便可以在代码中的其他位置访问它。然后,您可以使用它来清除重复调用的间隔。

@Steve您可以创建一个JSFIDLE来显示它不工作或者您遇到的问题吗?我确信它确实有效。我正在尝试,但我无法让它工作,这是一个相当复杂的网站,到处都在调用函数,我不能直接链接到它。还有一个事实,那就是它是一个开发区,我不能向全世界公布它的位置…@Steve ok。。那么您的对话框将信息发送到服务器?当你试图摧毁它的时候。。它一直在发送信息?单击链接,它会打开一个对话框,设置为加载PHP文件。这个PHP文件中有另一个JQuery命令,它将另一个PHP文件加载到每秒钟刷新一次的div中。当你使用Wireshark关闭对话框时,我仍然可以看到页面每秒都会返回更新的文件,所以很明显对话框没有关闭。你是在使用setInterval自动刷新内容吗?@Steve你能创建一个JSFIDLE显示它不工作吗?或者你遇到的问题?我确信它确实有效。我正在尝试,但我无法让它工作,这是一个相当复杂的网站,到处都在调用函数,我不能直接链接到它。还有一个事实,那就是它是一个开发区,我不能向全世界公布它的位置…@Steve ok。。那么您的对话框将信息发送到服务器?当你试图摧毁它的时候。。它一直在发送信息?单击链接,它会打开一个对话框,设置为加载PHP文件。这个PHP文件中有另一个JQuery命令,它将另一个PHP文件加载到每秒钟刷新一次的div中。当您使用Wireshark关闭对话框时,我仍然可以看到页面每秒都会返回更新的文件,因此很明显对话框没有关闭。您是否使用setInterval自动刷新内容?可能$this.dialog(“destroy”);也许$this.dialog(“销毁”);是的,与wirey合作了一段时间,但是由于setInterval在不同的页面上,它不起作用…是的,与wirey合作了一段时间,但是由于setInterval在不同的页面上,它不起作用。。。