【发布时间】:2011-11-22 13:47:38
【问题描述】:
由于某种原因,我在 firebug 中不断收到 XMLDoc 为空。我认为我的程序可能没有解析我尝试生成的 XML(这意味着我可能没有正确执行它)。
注意:我不想在这里使用 JQUERY!
这是我应该生成 XML 代码的代码:
<?php
$con = mysql_connect("localhost", "root", "");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("generic");
$rescult = mysql_query("SELECT * FROM culture order by cult_id");
if (!$rescult) {
die('Invalid query: ' . mysql());
}
$row = mysql_fetch_row($rescult);
ECHO "<item>";
ECHO "<item1>" . $row[0] . "</item1>" . "<br />";
ECHO "<item2>" . $row[1] . "</item2>" . "<br />";
ECHO "</item>";
?>
这是我应该解析它的代码:
<html>
<header>
<script type="text/javascript">
if (window.XMLHttpRequest)
{ // Code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{
// Code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","testitout2.php",false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
document.getElementById("item1").value =
xmlDoc.getElementsByTagName("item1")[0].childNodes[0].nodeValue;
document.getElementById("item2").value =
xmlDoc.getElementsByTagName("item2")[0].childNodes[0].nodeValue;
</script>
</header>
<body>
<input type="text" id="item1">
<input type="text" id="item2">
</body>
</html>
【问题讨论】:
-
对服务器的请求是异步的。正如您的代码所期望的那样,您不会立即得到响应。相反,您必须为请求的状态更改设置一个处理程序,并且当数据从服务器返回到客户端时,您将获得数据。
-
在请求完成后在 Firebug 控制台中执行
xmlhtp.responseText会得到什么? -
@Pointy: 由于标志
async在 OP 代码中显式设置为false,因此请求是同步的。 -
哦,杜尔,你是对的,@Luc1245 - 无论如何,他不应该那样做 :-)
-
@Pointy 我完全同意... Ajax 是异步的,否则就不是 Ajax。
标签: php javascript html xml ajax