0

私は、基本的にログファイルの継続的に更新されるテールをロードするダイアログを開くjQuery UIを使用してシステムに取り組んでいます。それはうまく機能しますが、問題は、それを閉じてもダイアログが消えないため、ファイルの末尾でトラフィックを送信し続けることです. 明らかに、それは良い習慣ではありません。

とにかく、これまでに試して問題に取り組んだコードは次のとおりです。

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.php

(function($)
{
    $(document).ready(function()
    {
        var $container = $("#responsecontainer");
        $container.load("console_class.php?console=<?php echo $console; ?>");
        var refreshId = setInterval(function()
        {
            $container.load('console_class.php?console=<?php echo $console; ?>');
        }, <?php echo $consoleRefresh;?>);
    });
})(jQuery);
4

5 に答える 5

3

API関数destroy() を見てください。

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

また、 clearInterval を使用する必要があります。そうしないと、ページが開いている限り実行され続けます。

$console.bind('dialogclose', function(event) {
    $console.dialog('destroy').remove();
    clearInterval(refreshID);
});
于 2012-11-12T15:56:11.613 に答える
0

ここではダイアログは問題ではありません。呼び出しを行う間隔です。

あなたが宣言するところrefreshIdはこのようにしてください...

var window.refreshId = setInterval(function()

次に、ダイアログを削除する場所に、clearInterval...を追加します。

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

これにより、変数がrefreshIdグローバルになり、コード内の他の場所からアクセスできるようになります。次に、それを使用して、繰り返し呼び出しを行っている間隔をクリアできます。

于 2012-11-12T17:23:33.277 に答える
0

私はこれと同じ問題を抱えていました...

見る:

に電話する必要があります$('#dialog_id').dialog("destroy");

于 2012-11-12T16:05:08.430 に答える
0

これを試して:

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

またはこのjQueryダイアログを読んでください

于 2012-11-12T15:59:32.720 に答える
0

あなたはすでにそれを言及しました

$console.dialog("destroy");

于 2012-11-12T15:54:25.403 に答える