Em làm demo thử 1 cái trang web theo dạng service, đại loại là trang login.php gọi tới trang userdetail.php và yêu cầu trang này xổ hết thông tin về người dùng, nhưng không hiểu sao đối tượng xmlDoc thì nhận về được, nội dung cũng chính xác, tuy nhiên lúc lấy giá trị từng node thì nó lại ghi null.
Code như sau:
Trang gọi đi:
login.php
Code:
...
function UserDetail()
{
request = GetXMLHttpRequest();
if(request!=null)
{
request.onreadystatechange = function()
{
if(request.readyState==4)
{
var xmlDoc = request.responseXML;
/*
* Tại vi trí này nó in ra đúng nội dung của đối tượng xml nhận về
*/
var txt = request.responseText;
alert("txt: "+txt);
/*
*
*/
text = "";
/*
* Tại vi trí này nó in ra đúng độ dài
*/
alert("working! "+xmlDoc.getElementsByTagName("group")[0].childNodes.length);
/*
*
*/
var group = xmlDoc.getElementsByTagName("group")[0];
try
{
for(i=0;i<group.childNodes.length;i++)
{
text += "<br>Name: ";
/*
* Tại vi trí này nó in ra đúng tên của node đó
*/
alert(group.getElementsByTagName("person")[i].childNodes[1].nodeName);
/*
*
*/
text += group.getElementsByTagName("person")[i].getElementsByTagName("name")[0].nodeValue;
text += "<br>FullName: ";
text += group.getElementsByTagName("person")[i].getElementsByTagName("fullname")[0].nodeValue;
text += "<br>Address: ";
text += group.getElementsByTagName("person")[i].getElementsByTagName("address")[0].nodeValue;
text += "<br>"
}
}
catch(e)
{
alert(e.toString());
}
document.getElementById("UserDetail").innerHTML = text;
}
}
query="http://localhost/MyForum/UserDetail.php?q="+Math.random();
request.open("GET",query,true);
request.send("");
}
else
{
alert("null");
}
}
...
trang được gọi đến:
UserDetail.php
Code:
<?php
header('Content-Type: text/xml');
header('Charset=utf-8');
header("Cache-Control: no-cache, must-revalidate");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
$db = mysql_connect("localhost","root","vertrigo");
if(!$db)
{
echo 'server is not ready';
exit;
}
else
{
mysql_select_db("MyForum",$db);
//$uid = $HTTP_GET_VARS['uid'];
//$str = "select * from UserInfo where UID=".$uid;
$str = "select * from UserInfo";
$rs = mysql_query($str,$db);
if(mysql_num_rows($rs)!=0)
{
echo "<group>";
while($row = mysql_fetch_row($rs))
{
echo "<person>";
echo "<name>".$row[1]."</name>";
echo "<fullname>".$row[3]."</fullname>";
echo "<address>".$row[4]."</address>";
echo "</person>";
}
echo "</group>";
}
}
?>
bỏ qua hết những cái lằng nhằng, cái chỗ em tô đỏ ý, chỗ đấy alert ra đúng nội dung của trang xml nhận về <em mở trang UserDetail.php bằng browser nó có code như cái alert>; nhưng không hiểu sao cái đối tượng xml lại không lấy được giá trị của các node, toàn là null. Các bác giúp em với ::?