在下面的代码中,我在 php 文件中回显了 $strXML,它显示了整个 $strXML,但我只想在 javascript 中显示“名称”元素值。谁能帮帮我?
PHP:
$strXML = '<? xml version="1.0" ?>'."\n";
$id = $_GET['id'];
$name = $_GET['name'];
$strXML .= '<data>'."\n";
$strXML .= '<id>'.$id.'</id>'."\n";
$strXML .= '<name>'.$name.'</name>'."\n";
$strXML .= '</data>'."\n";
echo $strXML;
JavaScript:
var xhr = createRequest();
function getData() {
if(xhr) {
var id = document.getElementById("id").value;
var name = document.getElementById("name").value;
var url = "search.php?id=" + id + "&name=" + name;
xhr.open("GET", url, true);
xhr.onreadystatechange = show;
xhr.send(null);
}
}
function show()
{
if ((xhr.readyState == 4) &&(xhr.status == 200))
{
var strXML = xhr.responseText;
alert(strXML);
}
}
最佳答案
responseText
property 是一个字符串(规范中的 DOMString 但在 JavaScript 中它只是一个 String
)所以你不能调用 getElementsByTagName
在上面;你想看xhr.responseXML
.
此外,getElementsByTagName
在调用它的元素下搜索:
The subtree underneath the specified element is searched, excluding the element itself.
所以你必须直接访问内容而不是在循环中:
var result = xhr.responseXML;
var id = result.getElementsByTagName('id' ).childNodes[0].nodeValue;
var name = result.getElementsByTagName('name').childNodes[0].nodeValue;
如果要返回多个<data>
元素(因此,使用你的 for
循环),那么你必须将 PHP 的返回值包装在另一个元素中:
<results>
<data>
<id>$id</id>
<name>$name</name>
</data>
<!-- etc. -->
</results>
关于php - 回显 php 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6105656/