2013-03-16 52 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(); 


      } 

     }