PHP 스크립트에서 반환 한 XML 파일을 Javascript로 구문 분석하려고하는데 무언가가 작동하지 않고 무엇을 모르겠습니다. PHP의는 다음과 같습니다는 XML 반환 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 version="1.0"?>
<elements>
<element name="first_name" address="first_address"/>
<element name="second_name" address="second_address"/>
</elements>
그럼 난 자바 스크립트와 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
이 표시됩니다.
내가 작동 처음 xmlthttp.open
대신에 그것을 사용하는 경우 당신은 내가이 댓글 //xmlhttp.open("get", "file.xml", true)
있는 것을 볼 수있다 (당신이 짐작 수 있으므로 file.xml는 위의 예처럼 보이는 단지 일반 XML 파일입니다) . 문제가 무엇인지 모르겠다. PHP 스크립트가 유효한 XML 파일을 반환한다고 확신한다. 누군가가 나를 도울 수 있다면 그것은 좋을 것입니다, 미리 감사드립니다! 때문에,
TypeError: xmlDoc.getElementsByTagName(...)[0] is undefined
을 재현 할 수 없습니다. 이것이 어떤 종류의 내부 또는 테스트 응용 프로그램이 아니면 않는 한. – Swippen
콜백 함수의'xmlDoc = xmlhttp.responseXML; 라인 바로 뒤에'xmlDoc'의 내용을 로깅 할 수 있습니다. –
'console.log (xmlhttp); 또한 XML 대신 JSON을 보내는 것이 더 쉬울 수도 있습니다 – Steve