我已经写了几行有效的ajax代码,但是它也提供了以下错误。
未捕获的TypeError:无法读取的属性'getElementsByTagName' 空值 在XMLHttpRequest.request.onreadystatechange
问题是此错误向我显示2次,并且第一次状态= 2是第二次状态= 3。
代码:
function ajax_XML(){
var request;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
}else{
request = new ActiveXObject('Microsoft.XMLHTTP');
}
request.open('GET','ajax.xml');
request.onreadystatechange = function(){
if(request.readyState === 4 && request.status === 200){
var items = request.responseXML.getElementsByTagName('Name');
var output = "<ul>";
for(var i = 0;i<items.length;i++){
output+="<li>" + items[i].firstChild.nodeValue + "</li>"
}
output+="</ul>";
document.getElementById('ajax_xml').innerHTML=output;
}else{
console.log('error');
}
}
request.send();
}
This is the link to the ajax file that is attached to the question.
答案 0 :(得分:0)
我找到了显示错误的原因,我曾经使用完全相同的代码,但是没有显示任何错误,因为没有代码显示错误,但是在上面的代码中ELSE指示了错误,实际上所有编写的代码他们有此错误,因为大多数XML标记在HTML中不存在,这就是导致此错误的原因。 不应编写代码来指示错误
function ajax_XML(){
var request;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
}else{
request = new ActiveXObject('Microsoft.XMLHTTP');
}
request.open('GET','ajax.xml');
request.onreadystatechange = function(){
if(request.readyState === 4 && request.status === 200){
var items = request.responseXML.getElementsByTagName('Name');
var output = "<ul>";
for(var i = 0;i<items.length;i++){
output+="<li>" + items[i].firstChild.nodeValue + "</li>"
}
output+="</ul>";
document.getElementById('ajax_xml').innerHTML=output;
}
}
request.send();
}