Javascript onload两个函数没有返回数据

时间:2013-05-19 03:49:32

标签: javascript ajax function onload

我试图在页面加载时显示两个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,当我只运行一个函数时它工作正常,当运行两个时它不会返回数据。 希望有人能帮助我。

2 个答案:

答案 0 :(得分:0)

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

var xmlhttp;

答案 1 :(得分: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;
  });

};