当测试成功时,为什么定义AJAX过程会失败?
我正在开发一款基于AJAX的风险风格游戏,一位后来离开的合作者编写了以下代码:当测试成功时,为什么定义AJAX过程会失败?,ajax,Ajax,我正在开发一款基于AJAX的风险风格游戏,一位后来离开的合作者编写了以下代码: function init() { xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET","risk.xml",true); xmlhttp.send(null); xmldoc=xmlhttp.responseXML; [snip] document.getElementById('player').value='red' [snip] redterrs=xmldoc.g
function init() {
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","risk.xml",true);
xmlhttp.send(null);
xmldoc=xmlhttp.responseXML;
[snip]
document.getElementById('player').value='red'
[snip]
redterrs=xmldoc.getElementsByTagName('redterrs')[0]
blueterrs=xmldoc.getElementsByTagName('blueterrs')[0]
purpleterrs=xmldoc.getElementsByTagName('purpleterrs')[0]
greenterrs=xmldoc.getElementsByTagName('greenterrs')[0]
当我尝试执行此操作时,在WebKit中出现以下错误:Uncaught TypeError:无法在redterrs=xmldoc.getElementsByTagName'redterrs'[0]上调用null的方法'getElementsByTagName',但当我在Firefox中使用Firebug执行此操作时,它告诉我xmldoc未定义
编辑:如果有人想看到更多内容,项目将位于。如果您使用的是裸XmlHttpRequest对象,则需要注册onreadystatechange的回调。这将在XHR通过其状态时触发 错误的做法是在回调之外将xmldoc分配给xmlhttp.responseXML
请看一看:您正在异步获取XML文档,但没有使用事件处理程序来确定何时收到了XML文档。由于您可能应该同步执行此操作,而且更简单,请尝试使用此操作代替第3行:
xmlhttp.open("GET","risk.xml",false);