我想用JavaScript來解析由PHP腳本返回的XML文件,但有什麼不工作,我不知道是什麼。 的PHP是這樣的:的Javascript XML解析錯誤
<?php
header("Content-Type: text/xml");
include ('database_connection.php');
// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("elements");
$parnode = $dom->appendChild($node);
$category = $_GET['category'];
$city = $_GET['city'];
$country = $_GET['country'];
$query = "select * from elements where elementId=any(select elementId from citycategoryelements where cityId="
. "any(select cityId from city where name='$city' and country='$country') and categoryId=any("
. "select categoryId from categories where name='$category'))";
$result = mysqli_query($dbc, $query);
if (!$result) {
echo "Could not successfully run query from DB: " . mysql_error();
exit;
}
// Iterate through the rows, adding XML nodes for each
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
// Add to XML document node
$node = $dom->createElement("element");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("name", $row['name']);
$newnode->setAttribute("address", $row['address']);
}
echo $dom->saveXML();
?>
返回的XML看起來是這樣的: XML實例
<?xml version="1.0"?>
<elements>
<element name="first_name" address="first_address"/>
<element name="second_name" address="second_address"/>
</elements>
然後我嘗試處理與Java語言的XML文件:
var xmlhttp;
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 && xmlhttp.status == 200)
{
var xmlDoc = xmlhttp.responseXML;
var name = xmlDoc.getElementsByTagName("element")[0].getAttribute("name");
alert(name);
}
}
xmlhttp.open("GET", "getElements.php?category=" + encodeURIComponent(category) +
"&city=" + encodeURIComponent(address[0])
+ "&country=" + encodeURIComponent(address[1]), true);
//xmlhttp.open("get", "file.xml", true);
xmlhttp.send();
}
當我嘗試運行代碼時,警告不會出現。此外,如果我嘗試提醒xmlDoc我得到null
。
你可以看到,我有這樣的評論//xmlhttp.open("get", "file.xml", true)
如果我使用它,而不是 第一xmlthttp.open
它的工作原理(你可能猜到了file.xml只是一個簡單的XML文件,它看起來像上面的例子) 。我真的不知道問題可能出在哪裏,我相信PHP腳本會返回一個有效的XML文件。如果有人能幫助我,那就太好了,謝謝!
編輯
還我忘了說了,如果我使用Firebug和
我得到的是這樣的:
TypeError: xmlDoc.getElementsByTagName(...)[0] is undefined
順便說一句,你應該非常小心的SQL注入。除非這是某種內部或測試應用。 – Swippen
你可以嘗試登錄'xmlDoc'的內容在回調函數,僅僅是'VAR xmlDoc中後= xmlhttp.responseXML;'行' –
的console.log(XMLHTTP);'您能得到什麼?此外,也許這將是一個更容易發出JSON而不是XML – Steve