2013-03-16 55 views
0

我想讓自己熟悉Ajax,因爲我需要不斷地使用它來工作。我正在通過W3Schools教程嘗試使用我的Apache2服務器。我在服務器上有一個名爲ajax_info.txt的文件(在/ var/www(ubuntu)下)。我打電話給它,並用螢火蟲我看到我得到一個很好的迴應(4 & 200),但它不輸出文件的內容到DOM。這裏的代碼:xmlhttp.responseText不輸出到innerHTML

<!DOCTYPE html> 
<html> 
    <head> 
     <script> 
     var xmlhttp; 
     var url = "http://192.168.0.5/ajax_info.txt"; 

     function loadXMLDoc(url, cfunc) { 
      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 = cfunc; 
      xmlhttp.open("GET", url, true); 
      xmlhttp.send(); 
     } 
     function myFunction() { 
      loadXMLDoc(url, function() { 
       if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
        document.getElementById("myDiv").innerHTML = xmlhttp.responseText; 
       } 
      }); 
     } 
     </script> 
    </head> 
    <body> 
     <div id="myDiv"> 
      <h2>Let AJAX change this text</h2> 
     </div> 
     <button type="button" onclick="myFunction()">Change Content</button> 
    </body> 
</html> 

我不完全確定它是什麼我做錯了。 w3schools教程沒有詳盡無遺。我打算購買一本書,但我很樂意學習這些簡單的GET調用,因爲它會讓我朝着正確的方向前進。任何建議將不勝感激。

+0

如果您使用它,會發生什麼? document.getElementById(「myDiv」)。innerHTML ='test'; – Sebas 2013-03-16 00:53:34

+0

不是問題,但如果要編寫'loadXMLDoc()'以便它接受回調,爲什麼不在調用回調函數前做所有'readyState'和'status'檢查_before_?在成功傳遞結果作爲參數時調用它。 (注意:如果您使用更好的縮進方案,您的代碼將更易於閱讀,因此更易於調試......) – nnnnnn 2013-03-16 00:53:53

+1

您的頁面是否也來自'http:// 192.168.0.5 /'?如果不是,它可能會將其視爲跨域請求。 – 2013-03-16 01:06:18

回答

1
function ajax(x) { 

      var a; 

      if (window.XMLHttpRequest) { 
       a = new XMLHttpRequest(); 
      } else if (window.ActiveXObject) { 
       a = new ActiveXObject("Microsoft.XMLHTTP"); 
      } else { 
       alert("Browser Dosent Support Ajax! ^_^"); 
      } 


      if (a !== null) { 
       a.onreadystatechange = function() { 
        if (a.readyState < 4) { 
         //document.getElementById('cnt').innerHTML = "Progress"; 
        } else if (a.readyState === 4) { 
         //respoce recived 
         var res = a.responseText; 

         document.getElementById('center_scrolling_div').innerHTML = res; 
         eval(document.getElementById('center_scrolling_div').innerHTML); 
        } 
       }; 

       a.open("GET", x, true); 
       a.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
       a.send(); 


      } 

     }