url = "http://localhost/xml.php?type=xml"; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", url, true); xmlhttp.setRequestHeader('Content-Type', 'application/xml'); xmlhttp.send(null); } else if (window.ActiveXObject) { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); if (xmlhttp) { xmlhttp.open("GET", url, true); xmlhttp.setRequestHeader('Content-Type', 'application/xml'); xmlhttp.send(); } } alert(xmlhttp.responseXML); //returns null
XML文件
<?xml version="1.0" encoding="UTF-8" ?> <main> <food> <type>6</type> <region>5676</region> </food> <food> <type>6</type> <region>5676</region> </food> </main>
有人知道为什么xmlhttp.responseXML返回null吗?
xmlhttp.responseXML
您的HTTP请求是异步的。xmlhttp.responseXML只有xmlhttp.readyState具有的值时,它才有价值4。
xmlhttp.readyState
4
var url = "http://localhost/xml.php?type=xml"; var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } if (xmlhttp) { xmlhttp.open("GET", url, true); xmlhttp.setRequestHeader('Content-Type', 'text/xml'); xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) { alert(xmlhttp.responseXML); } }; xmlhttp.send(); }
另外,我认为您不需要setRequestHeader排队。必须提供XML MIME类型才能响应,而不是请求。另外,请遵守良好的编码习惯(不要忘记var,DRY等)
setRequestHeader
var