0

基本的にサーバーをシャットダウンまたは起動する関数をJQueryで実行しようとしています。私がこれまでに持っているコードはこれです-

$(".stopServer").click(function(){
    $.post("controller.php",{stop: 'true', server: this.name});
    $('#test'+this.name).load('controller.php?status=true&server='+this.name);
});

問題は明らかにサーバーを正常に停止することですが、ステータスdiv('#test' + this.name)をすぐに更新します。サーバーのシャットダウンには時間がかかるため、これは適切ではありません。SetTimeoutを機能させようとしていますが、理解できません...何か助けていただければ幸いです。

みんなありがとう、あなたは最高です:)

アップデート:

全機能はここにあります:

$(document).ready(function() {

$(".startServer").click(function(){
    $.post("controller.php",{server: this.name});
    setTimeout("showStatus('"+this.name+"')", 3000);
});

$(".stopServer").click(function(){
    $.post("controller.php",{stop: 'true', server: this.name});
    setTimeout("showStatus('"+this.name+"')", 3000);
});

function showStatus(name) {
    alert(name);
    $('#test'+name).load('controller.php?status=true&server='+name);
}
});

アップデート

その考えをあきらめ、代わりにステータスは毎秒ポーリングされます。

var refreshId = setInterval(function()
{
    $('.status').each(function() {
    var $name = $(this).attr('name');
    $(this).load("controller.php?status=true&server=" + $name);

});
}, 1000);
4

3 に答える 3

2

サーバーが実際にシャットダウンしたときに「controller.php」から応答が返されるかどうかはわかりません。そうでない場合は、これを試してください...

$(".stopServer").click(function(){
    $.post("controller.php",{stop: 'true', server: this.name});
    setTimeout("showStatus('"+this.name+"')", 10000);
});

function showStatus(name) {
    $command = $('#test'+name).load('controller.php?status=true&server='+name);
}
于 2012-11-14T22:04:57.050 に答える
2

関数をラッピングする簡単なサンプルを追加しましたsetTimeout

​$(document).ready(function(){
    $('#test').click(function(){
        var message = 'hello';
        setTimeout(function(){ callback(message) },1000); 
    });
    function callback(name){
        alert(name);
    }        
});​

JSFiddleデモ

于 2012-11-14T23:11:37.917 に答える
1

ajax呼び出しは非同期です。$ .post()呼び出しはすぐに戻り、実際の投稿作業をバックグラウンドで実行できます。同期呼び出しに変更するか(通常はお勧めできません)、後続のコードを.post呼び出しの「成功」部分に配置します。

$.post('controller.php', success: function(data) {
    $command = etc....
});
于 2012-11-14T21:53:29.740 に答える