回显php数据

问题描述

| 在以下代码中,我在PHP文件中回显了$ strXML,该文件显示了整个$ strXML,但是我只想在javascript中显示\'name \'元素值。有谁能够帮助我? 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
属性是一个字符串(规范中为DOMString,但在JavaScript中仅为a3ѭ),因此您无法在其上调用
getElementsByTagName
。您想看
xhr.responseXML
。 同样,
getElementsByTagName
在被调用的元素下方搜索:   搜索指定元素下面的子树,不包括元素本身。 因此,您将不得不直接访问内容,而不是在循环内:
var result = xhr.responseXML;
var id     = result.getElementsByTagName(\'id\'  ).childNodes[0].nodeValue;
var name   = result.getElementsByTagName(\'name\').childNodes[0].nodeValue;
如果要返回多个
<data>
元素(因此使用use9ѭ循环),则必须将PHP的返回值包装在另一个元素中:
<results>
    <data>
       <id>$id</id>
       <name>$name</name>
    </data>
    <!-- etc. -->
</results>
    ,不要批评您当前的决定,但是我发现,如果您使用JSON来回传输数据,则使用PHP和JavaScript的组合要容易得多。 PHP具有创建JSON和JavaScript的出色方法,好吧,它就是JavaScript。我认为这通常会使开发变得容易得多:
<?php   
$data = array(
    \'data\' => array(
        \'id\' => $_GET[\'id\'],\'name\' => $_GET[\'name\']
    )
);

echo json_encode( $data );
在JS方面:
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 response = eval(\'(\' + xhr.responseText + \')\');
        alert( response.data.id );
    }
}
当然,如果您已经在其他地方使用XML(例如,在Web服务中或使用XSLT显示页面),那么XML会更有意义。不过只是我的$ 0.02。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...