2010-11-10 31 views
0

我学习JavaScript的一个新项目。 我见过很多教程关于JavaScript和XMLHttpRequest的, 但是当我尝试运行解码它不会工作。 有人可以帮助我。的JavaScript的XMLHttpRequest将无法正常工作

这里是我的HTML + JavaScript代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>xml reader</title> 
</head> 

<body> 
<script type="text/javascript"> 
    var xmlhttp; 
    var xmldoc; 
    if(window.XMLHttpRequest){ 
     xmlhttp = new XMLHttpRequest(); 
    }else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=stateChange(); 
    xmlhttp.open("GET","info.xml",true); 
    xmlhttp.send(null); 
    xmldoc = xmlhttp.responceXML.documentElement; 
    document.write(xmlhttp.getElementsByTagName("vakken")[0].childNodes[0].nodeValue); 
</script> 
</body> 
</html> 

这里是我的xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<info> 
     <name>test</name> 
     <nummber>10</nummber> 
</info> 

+1

什么是你想怎么办? – 2010-11-10 06:49:32

回答

1

你在你的JavaScript中的ReferenceError,防止它完全执行。 “stateChange”未定义。您需要定义stateChange函数。

而且它看起来像“响应”拼写错误(性反应)。

请通过本教程从W3Schools的:http://www.w3schools.com/XML/xml_http.asp

你很近所以使用W3Schools的作为一种资源来修复代码中的一些其他问题。

1

stateChange()你打电话是没有定义onreadystatechange - 添加一个名为stateChange功能将被调用一次的响应返回。

这样的函数的例子:

function stateChange() { 
    if(xmlhttp.readyState == 4){ 
     xmldoc = xmlhttp.responseXML.documentElement; 
     document.write(xmlhttp.getElementsByTagName("vakken")[0].childNodes[0].nodeValue); 
    } 
} 

你必须记住,AJAX是异步的 - 响应必须单独在它返回的时间来处理 - 因此readystatechanged事件使用...
删除从原始代码发送请求后发出两行(它们位于stateChange函数中)。

1

你不要在请求接收答案或可能它是这种情况,你得到一个答案,但它没有写进你的DOM?最近我遇到了问题,document.write在我的某个页面中不起作用。我发现,document.write是不允许在基于XHTML的页面(我的页面是XHTML 1.1,你的是XHTML 1.0)。所以这只是一个猜测。你可以用firefox的firebug-extension来测试它。 Althought所有常见的浏览器尊重,即document.write是不允许的,抛出一个错误的消息,但是IE不支持在任何情况下document.write ...