2012-01-10 65 views
0

我做了一个简单的HTML来玩XHR,但没有得到httpxml.responseText的响应; 但该脚本在safari控制台中工作。卡在XMLHttpRequest

<html><head></head><body> 
     <div id="myDiv"></div> 
     <button type="button" onclick="loadXMLDoc()">Change Content</button> 
     <script type="text/javascript"> 
      function loadXMLDoc() 
      { 
      httpxml = new window.XMLHttpRequest; 
      httpxml.open('GET','resources/xml/test.xml',true); 
      httpxml.send(); 
      text = httpxml.responseText; 
      alert(text);// there's no text in the alert window 
      document.getElementById("myDiv").innerHTML=text; 
      } 
     </script> 
    </body> 
</html> 
+0

哪本书/教程你读这使你错误地接近它? – BalusC 2012-01-10 03:53:21

+0

@BalusC这是W3school的阿贾克斯啧啧,我犹豫了解全面测试并错过了异步点 – mko 2012-01-11 00:58:02

回答

0

您应前添加readyState的测试。

function loadXMLDoc() 
{ 
    httpxml = new window.XMLHttpRequest(); 
    httpxml.open('GET','yourpage.xml',true); 
    httpxml.send(null); 
    httpxml.onreadystatechange = function() { 
    if(httpxml.readyState == 4) { 
    text = httpxml.responseText; 
    alert(text); 
    document.getElementById("myDiv").innerHTML=text; 
    } 
    } 
} 

但对于这一点,我将使用jQuery的,所以更容易:

$('#mybutton').click(function(){ 
    $.GET('yourpage.xml',function(data){ 
     $('#mydiv').html(data); 
    }); 
}); 
+0

工程就像一个魅力!并感谢指出了方便的jQuery版本! – mko 2012-01-11 00:56:24

+0

如果它可以帮助你和/或任何人,那太棒了!我发现自己在这里遇到了很多自己的脚本错误的答案。 – Valky 2012-01-11 02:58:17

1

难道只是我还是要传递“true”作为httpxml.open的第三个参数?这意味着“异步执行请求”。将此参数更改为“false”或设置在网络操作完成时调用的readystate回调函数。

更好的例子代码在这里: http://www.w3.org/TR/XMLHttpRequest/

+0

良好的学习资源,感谢把这里的官方文档放在这里 – mko 2012-01-11 00:58:59