php - 回显 php 数据

标签 php javascript xml

在下面的代码中,我在 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/

相关文章:

javascript - 在 catch block 中抛出新错误不起作用

javascript - 我怎样才能 "treefy"我的 table ?

c# - 在带有 XML 的 C# Windows 窗体中使用 GetElementsByTagName

java - Java 序列化、JSON、JAXB 之间的区别?

android - Android 开发微调器的默认 Eclipse 主题?

php - Facebook SDK 访问 token 和 ajax

php - Foreach循环按类别分组

php - 分解任务时间

javascript - 在查询生成器日期选择器中隐藏 future 日期

php - 输出 WordPress 列表类别,其中按父类别名称计数