我现在已经在两天左右的时间里一直在寻找这个问题的答案。我似乎无法弄清楚它是怎么回事。所有这些似乎过去都有效但不再适用了。
XML:
<ZipCodes>
<results>
<city>Chicago</city>
<state>IL</state>
<timezone>-6</timezone>
</results>
的javascript:
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","_checkzip.php?zip="+str,true);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
x=xmlDoc.getElementsByTagName("results");
i=0;
document.forms["signup"]["City"].value=(x[i].getElementsByTagName("city")[0].childNodes[0].nodeValue);
document.forms["signup"]["states"].value=(x[i].getElementsByTagName("state")[0].childNodes[0].nodeValue);
document.forms["signup"]["TimeZone"].value=(x[i].getElementsByTagName("timezone")[0].childNodes[0].nodeValue);
我得到的错误是
Cannot read property 'getElementsByTagName' of null
当我尝试x = xmlDoc.getElementsByTagName(&#34; results&#34;);当我在Chrome中查看调试时,xml会对网络响应产生影响。
答案 0 :(得分:2)
您可以在XMLHttpRequest onreadystatechange
上使用事件处理程序来确保请求已完成。如果readyState的状态为4,则操作完成。
目前您还在询问尚未传输的数据。
答案 1 :(得分:0)
除了确保xmlhttp.readyState == 4&amp;&amp; xmlhttp.status == 200,如果在从服务器发送xml数据之前输出任何内容,字母,字符或字符串,也会发生此错误。例如,假设在java中你有一个名为sendXMLdata的方法/函数,然后在你的servlet中你打印了字符串&#34; connected&#34;在调用方法之前: .... 通过out.println(&#34;连接&#34); 字符串数据=&#34;我的名字&#34; sendXMLdata(响应数据); ....
然后从浏览器源查看时的输出将是: 连接的 我的名字
所以这肯定会给你一个错误,因为浏览器无法解析字符串&#34; connected&#34;因为它不是呈现xml数据的写入格式。