2011-08-29 151 views
2

我在互聯網上製作了這個帶有教程的小腳本。 PHP函數調用這個javascript的次數是有按鈕(foreach),現在我有三個。 $ value是特定按鈕的div名稱(按鈕存儲在php數組中)。ajax按鈕加載狀態

一切工作正常......除了當我點擊所有的按鈕快,加載GIF沒有JavaScript改變按鈕狀態。從另一個php獲得的響應是​​新按鈕狀態和會話變量更改。會話變量得到改變,但分區劑量。

因此,我需要幫助的繼承人,我怎麼能這樣做,當我點擊按鈕快,div也得到改變?

我的代碼

function load_javascripts() { 

    foreach ($GLOBALS["VARIABLES"]["button_list"] as $key => $value) { 
     $scripts .= " 

     function run_alias_button_".$value."(str) 
     { 
     document.getElementById('aliasbutton_".$value."').innerHTML='<img src=ajax_loader.gif>'; 
     if (str=='') 
      { 
      document.getElementById('aliasbutton_".$value."').innerHTML=''; 
      return; 
      } 
     if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
      } 
     else 
      {// code for IE6, IE5 
      xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); 
      } 
     xmlhttp.onreadystatechange=function() 
      { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
      document.getElementById('aliasbutton_".$value."').innerHTML=xmlhttp.responseText; 
      } 
      } 
     xmlhttp.open('GET','?leht=alias_logimine&alias=".$value."',true); 
     xmlhttp.send(); 
     } 
     "; 
    } 
    return $scripts; 
} 
+0

考慮預加載你的圖像。 然後圖像來自瀏覽器的緩存。 –

+0

而我會使用像jQuery這樣的javascript框架。真的很容易學習,充足的例子和更快的發展... –

回答

0

var xmlhttp;在函數的一開始,使得可變明確地方。有時候沒有這個聲明,瀏覽器可能會試圖找到一個帶有這個名字的全局變量,並且readystate監控從一個請求轉移到另一個請求。

+0

謝謝你,幫助:) –

+0

然後你可以標記答案接受:) – andr

0

只是一個提示。使用打開函數始終在onreadystatechange事件之前。你使用的方式可能適用於Firefox,但IE瀏覽器並不理解。像這樣:

xmlhttp.open('GET','?leht=alias_logimine&alias=".$value."',true); 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById('aliasbutton_".$value."').innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.send();