2011-05-20 85 views
1

我有三個函數: get_stat(sess)將參數發送到php腳本 handlestat()處理php腳本的響應 check_sms(sess_a)應該使用setInterval重複它自己 - 它依賴於可變disabled_stat清除定時器setInterval不工作?

但它不工作,get_stat(SESS)不開除,它只是攤位

var disabled_stat = false; 
function get_stat(sess) 
{ 
    if(disabled_stat==false) 
    { 
     var url = "/sms_check_status.php?param="; 
     var title_f = document.getElementById('stat_title'); 
     var stat_f = document.getElementById('stat_text'); 
     title_f.innerHTML = ' '; 
     stat_f.innerHTML = ' '; 

     var myRandom=parseInt(Math.random()*99999999); 
     http.open("GET", url + escape(sess) + "&rand=" + myRandom, true); 
     http.onreadystatechange = handlestat; 
     http.send(null); 
    } 
} 

function handlestat() 
{ 
    var str_out = ''; 
    var results = ''; 
    if (http.readyState == 4) 
    { 
     results = http.responseText.split("~"); 
     if(results[0]=='1') 
     { 
      document.getElementById('stat_title').innerHTML = results[1]; 
      document.getElementById('stat_text').innerHTML = results[2]; 
      if(results[3]=='1') 
      { 
       disabled_stat = true; 
      } 
     } 
    } 
} 

function check_sms(sess_a) 
{ 
    my_inteval = setInterval("get_stat(sess_a)", 1000); 
    if(disabled_stat==true) 
    { 
     clearInterval(my_inteval); 
    } 
} 

回答

8

這條線:

my_inteval = setInterval("get_stat(sess_a)", 1000); 

將不起作用,因爲它使用了一個字符串表達式,最終將在全局範圍內進行評估,其中變量sess_a不存在。

相反,使用:

my_inteval = setInterval(function() { 
    get_stat(sess_a); 
}, 1000); 
+0

我忘了說,我叫check_sms(sess_a) 如下: Status 2011-05-20 17:56:23

+0

我已經試過以上,這讓很多的意義,但沒有修理它。任何其他想法? – 2011-05-20 18:08:37