2011-08-29 81 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();