0

我试图在页面加载时显示两个 javascript 函数。但似乎一个正在覆盖另一个。

这是javascript代码:

function welcome(){

    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("welcome").innerHTML=xmlhttp.responseText;
        }
     }
     xmlhttp.open("GET","php/display_welcome.php", true);
     xmlhttp.send();
}


function testimonial(){
    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("testimonial").innerHTML=xmlhttp.responseText;
        }
     }
     xmlhttp.open("GET","php/display_testimonial.php", true);
     xmlhttp.send();

}

window.onload = function() {
    welcome();
    testimonial();
};

我在 html 页面中有 2 个 div id。另外我使用的是 IE9,当我只运行一个函数时它工作正常,当运行两个时它不返回数据。希望有人可以帮助我。

4

2 回答 2

0

你声明xmlhttp没有var它给它全局范围,这就是为什么当你调用第二个函数时它会被覆盖。在本地声明它不会发生。使用 var 并在本地声明它。

var xmlhttp;
于 2013-05-19T03:57:26.600 回答
0

很多事情都可能出错:

  • 无响应的服务器
  • 错误的复制粘贴代码
  • 语法错误
  • 等等

无论如何,即使两个代码看起来相同,为了避免重复代码和可能的错误,我建议你这样做。由于两者基本上都使用相同的操作,让我们将其分解为一个可重用的函数:

function load(url,callback) {

  var xmlhttp;
  if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
  else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

  xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
      callback(xmlhttp.responseText);
    }
  }
  xmlhttp.open('GET', url);
  xmlhttp.send();
}

window.onload = function () {

  load('php/display_welcome.php',function(response){
    document.getElementById("welcome").innerHTML = response;
  });

  load('php/display_testimonial.php',function(response){
    document.getElementById("testimonial").innerHTML = response;
  });

};
于 2013-05-19T04:00:14.553 回答