2012-11-14 2 views
0

기본적으로 서버를 종료하거나 시작하는 JQuery에서 함수를 실행하려고합니다. 내가 지금까지 가지고있는 코드는이 -코드를 실행하기 전에 JQuery SetTimeout

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

문제는 분명히 그것은 서버의 벌금을 중지하지만 곧바로 상태 DIV ('# 테스트'+ 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); 
} 
}); 

UPDATE

그것의 생각에 포기 :

전체 기능 현재 위치 :

고마워, 당신은 최고의 :)

UPDATE있어 대신 매 초마다 상태가 폴링됩니다.

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

}); 
}, 1000); 

답변

1

나 ' 승 서버를 생각하지 마십시오 setTimeout

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

JSFiddle DEMO

+0

포기했습니다. 대신 매시간 상태를 폴링합니다. – Steve

+0

@ 스티브 - 시원한; 마음을 바꿀 결심이라면 여기에 데모가 있습니다! 행운을 빕니다! – f0x

+0

어쨌든 내가 원하는 것을 수행하므로 선택한 대답을 줄 것이다 :) Thanks buddy :) – Steve

1

아약스 호출은 비동기입니다. $ .post() 호출은 즉시 반환되며 실제 게시물 작업을 백그라운드에서 수행 할 수 있습니다. 동기 호출 (보통 좋은 생각은 아닙니다)으로 변경하거나 .post 호출의 "성공"부분에 후속 코드를 넣으십시오. 나는 서버가 실제로 종료 할 때 'controller.php'에서 응답을 얻을 것이다 경우에 경우에 당신이 시도하지 않는, 잘 모릅니다

$.post('controller.php', success: function(data) { 
    $command = etc.... 
}); 
+0

에서 함수를 포장의 빠른 샘플을 추가했습니다 게시물이 완료 될 때까지 ould've 종료; 왜 그가 setTimeout 또는 interval 솔루션을 요구하는지 추측합니다. – f0x

+0

예. 서버가 종료되는 데 3 초가 걸리며, 명령을 내리면 밀리 초 후에 반환됩니다. – Steve

+0

JS 항목은 서버 쪽 스크립트가 돌아 오는 것을 기다리는 대신 확대/축소하는 대신 다음 코드 행 난 지연뿐만 아니라 성공 처리기에 넣을거야, 그래서 3 초 카운트 시작 후 shutdown 명령을 발급 확인을 시작합니다. –

2

...

$(".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

@ 스티브 (Steve), 아마도 이것은 당신이하려는 일에 최선의 방법 일 것입니다. '10000'은 10 초 지연을 의미하며 매개 변수로 함수를 전달합니다. – f0x

+0

이것은 분명히 내가 달성하고자하는 것이지만 작동하지 않습니다 ... 그것은 종료 명령을 실행하고 있지만 div를 업데이트하지는 않습니다. – Steve

+0

크롬 또는 파이어 폭스를 사용하는 경우 개발자 도구를 사용하고 중단 점을 사용하여 실제로 어떤 현상이 발생하는지 확인하려면 디버깅을 시도하십시오. – ebadedude

관련 문제