2013-07-14 3 views
0

필자는 인터넷 기능이있어 시간 제한 JQuery와 줄 수 있습니다 : 그것은 작동하지 않습니다아약스 데이터

  var timeout=60000; 
    setInterval(function() { 

     $.ajax({ 
      url: "/xheresfm/getstatus.php", 
      data: { 
      }, 
      success: function(data) { 
      var obj = jQuery.parseJSON(data); 
      timeout=obj.refresh; 
      } 
     }) 
    }, timeout); 
}); 

timeoit가에 allways 60000입니다 만, 빈 결과를 obj.refresh주지 않는다, 나는 오순절을 파악하지 못할 .

예를 들어

obj.refresh가 9999999 인 경우는 시간 제한은 timout 방법은 AJAX 호출하기 전에 실행, 60000

+0

두 번째 단어'var'을 제거하면 어떻게됩니까? –

+0

여전히 차이가 없습니다. 6000 – Rickert

+0

새로 편집 된 코드에 오류가 계속 표시 될 수 있습니까? –

답변

1

코드가 작동하지 않는 이유는 비동기 호출을 사용하는 것입니다 아직도있다. 아래 코드를 사용하여이 문제를 극복 할 수 있습니다.

var timeout=60000; 

var func = function() { 
     $.ajax({ 
      url: "/xheresfm/getstatus.php", 
      data: { 
      }, 
      success: function(data) { 
      var obj = jQuery.parseJSON(data); 
      timeout=obj.refresh; 

      setTimeout(func, timeout); 
      } 
     }) 
    } 

func(); 

희망이 있습니다.

0

성능상의 문제가 발생하면 인터벌 원인을 사용해서는 안됩니다. 성능상의 문제가 있으면 전화를 걸고 전화를 걸고 전화를 걸어 루프를 반복하십시오. ^^ - 좋은 생각이 아닙니다. 내 접근 방식에 대해 어떻게 생각하세요?

var timeout = 60000; 

var refreshStatus = function() { 
     $.ajax({ 
      url: "/xheresfm/getstatus.php", 
      success: function(data) { 
      var obj = jQuery.parseJSON(data); 

      //do stuff on success 
      }, 
      done: function() { 
      setTimeout(function() { 
       refreshStatus(); 
      }, timeout); 

      } 
     }) 
    } 

refreshStatus();