我在javascript中有这个问题。
function showItems(type)
{
var xmlhttp = new XMLHttpRequest(); //create object
var call = "getitems";
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
response = xmlhttp.responseXML;
alert(response);
}
}
xmlhttp.open("GET", "scripts/php/ajaxCalls.php?call=" + call + "&type=" + type, true);
xmlhttp.send();
}
这是我在PHP文件中获得的脚本
//now use the gathered item ids to return items in proper XML back to javascript.
$xml = "<?xml version='1.0' encoding='UTF-8'?><items>";
$numberOfItems = count($items);
for($i=0; $i<$numberOfItems; $i++)
{
$xml .= "<ITEMS>";
$itemId[$i] = $items[$i];
$xml .= "<ID>".$itemId[$i]."</ID>";
$itemPic[$i] = $itemList[(int)$itemId[$i]][2];
$xml .= "<PICTURE>".$itemPic[$i]."</PICTURE>";
$xml .= "</item>";
}
$xml .= "</ITEMS>";
echo $xml;
我的问题是当我将reponse = xmlhttp.responseXML更改为xmlhttp.responseText时。响应很好我得到了我想要的字符串,它看起来像XML。但!当我使用xmlhttp.responseXML时,我经常得到NULL作为返回值。我错过了什么?
答案 0 :(得分:1)
好吧,我可以告诉你,你的XML不太可能被任何兼容的DOM解析器解析,因为你的<items>
节点在顶部是小写,而是由大写<ITEMS>
关闭。 / p>
XMLHttpRequest.responseXML
返回包含的文档 对请求的响应,如果请求不成功,则返回null 尚未发送,或无法解析为XML或HTML 。回应是 解析就好像是text / xml流一样。设置responseType时 到“文档”并且请求已经异步进行了 响应被解析为text / html流。
此外,您可能希望发送正确的Content-type标头以及响应,以确保客户端正确接受它或强制XMLHttpRequest
对象通过overrideMimeType()
方法将其解析为XML。 / p>