您好我正在尝试使用脚本从php站点获取XML文本。但是,它没有返回任何数据。这就是我在做的事情。
<head>
<script type="text/javascript">
function getImei()
{
var imei = document.getElementById("imeiInput").value;
if (imei=="")
{
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState==4)
{
document.getElementById("txtResult").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","http://www.phonesite.com/xml/api/phone.php?IMEI=" + imei,true);
xmlhttp.send();
}
</script>
</head>
<body>
<input type="textbox" id="imeiInput"/>
<input type="button" onClick="getImei()" id="btnSubmit" text="Submit"/>
<p id="txtResult"></p>
</body>
</html>
当我这样做时,xmlhttp.readystate停止在1.当我将“xmlhttp.onreadystatechange = function()”放在xmlhttp.send()下面时,它表示FireBug中的就绪状态为4但它完全跳转完成功能而不进入内部并完成。
另外,我确实尝试使用查询字符串直接在我的浏览器中输入url并返回文本。查看GET请求,当Javascript将其发送出去以及我输入时,它们是相同的。
Date Fri, 14 Oct 2011 01:34:05 GMT
Server Apache
Content-Encoding gzip
Vary Accept-Encoding
Content-Length 87
Keep-Alive timeout=15, max=100
Connection Keep-Alive
Content-Type text/xml
Request Headersview source
Host www.phonesite.com
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
我在firebug中为xml文本收到此错误。
XML Parsing Error: no element found Location: moz-nullprincipal:{baefeeae-cd08-9641-a08f-6b3c3396e8a7} Line Number 1, Column 1:
答案 0 :(得分:2)
当您从服务器请求响应为XML时,不仅仅是使用responseXML读取该响应的文本
instead of "responseText"; you need for xml "responseXML"
这将至少返回文本并让你继续前进
function getImei()
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var imei = document.getElementById("imeiInput").value;
if (imei=="")
{
return;
}
if(xmlhttp) {
xmlhttp.open("GET","http://www.phonesite.com/xml/api/phone.php?IMEI=?" + imei, true);
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtResult").innerHTML=xmlhttp.responseText; // if the returned content type is is "text/xml" innerhtml will strip out the tags
}
}
xmlhttp.send(null);
}
}