0

ページの読み込み時に 2 つの 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 を使用しています。関数を 1 つだけ実行すると正常に動作し、2 つ実行するとデータが返されません。誰かが私を助けてくれることを願っています。

4

2 に答える 2

0

xmlhttpグローバル スコープを指定せずに宣言しvarたため、2 番目の関数を呼び出したときに上書きされます。ローカルで宣言すると、それは起こりません。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 に答える