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 回答