我正在尝试在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);
答案 0 :(得分: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);
}
答案 1 :(得分:1)
ajax调用是异步的。 $ .post()调用立即返回,让实际的后期工作在后台完成。要么将其更改为同步调用(通常不是一个好主意),要么将后续代码放在.post调用的“成功”部分,例如
$.post('controller.php', success: function(data) {
$command = etc....
});
答案 2 :(得分:1)
我添加了一个快速的示例,将函数包装在setTimeout
$(document).ready(function(){
$('#test').click(function(){
var message = 'hello';
setTimeout(function(){ callback(message) },1000);
});
function callback(name){
alert(name);
}
});