我是AJAX和XML的新手。
我有以下XML:
<rsp stat="ok">
<auth>
<token>123-123</token>
<perms>read</perms>
<user nsid="id" username="user_name" fullname="Full Name"/>
</auth>
</rsp>
我有以下代码:
function readXML(xml)
{
var xmlDoc = xml.responseXML;
var x = xmlDoc.getElementsByTagName("user");
document.getElementById("dummy").innerHTML= x.getAttribute("username"));
window.location.replace("path/info.php?username="+ x.getAttribute("username"));
}
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if(xhttp.readyState==4 && xhttp.status==200)
{
readXML(xhttp)
}
}
xhttp.open("GET", <?php echo ($url);?>, true);
xhttp.send();
我无法获取<user>
xml标记的任何属性(nsid,用户名,全名)。我该如何解决这个问题?
答案 0 :(得分:2)
在此行的末尾有一个结束括号)
:
document.getElementById("dummy").innerHTML= x.getAttribute("username"));
更新这两行:
document.getElementById("dummy").innerHTML= x.getAttribute("username"));
window.location.replace("path/info.php?username="+ x.getAttribute("username"));
到
document.getElementById("dummy").innerHTML= x[0].getAttribute("username");
window.location.replace("path/info.php?username="+ x[0].getAttribute("username"));
x
现在为x[0]
,因为xmlDoc.getElementsByTagName("user")
中的getElementsByTagName会返回HTMLCollection,您想要此集合中的第一项。
答案 1 :(得分:0)
尝试:
$xml=simplexml_load_file("FileName.xml") or die("Error: Cannot create object");
$xml->user['nsid'];
$xml->user['username'];
$xml->user['fullname'];
答案 2 :(得分:0)
您应该在JavaScript中使用库进行ajax / xml处理。最受欢迎的图书馆是jQuery(非常强大,所以请看一下!)。
使用jQuery的简单示例如下所示:(sample os jsFiddle)
// Callback for processing the response from the server
var callback = function (data) {
var token = data.getElementsByTagName("token");
var tokenValue = token[0].innerHTML;
var user = data.getElementsByTagName("user");
var usernameAttributeValue = user[0].getAttribute("username");
};
// Actually calls the server, ajax endpoint, and calls callback on response
$.ajax(ajaxEndpointUrl).done(callback);