为什么firstChild.data返回Undefined?

时间:2016-05-26 17:45:27

标签: javascript php jquery html ajax

我有以下JavaScript代码片段,它通过php脚本读取动态创建的XML文件,并在目标html页面中相应地写入文本。

function process()
{
    if(xmlHttp.readyState==0 || xmlHttp.readyState==4)
    {

        var user = encodeURIComponent(document.getElementById("email").value);
        var url = "http://localhost/dashboard/x/js/login.php?user="+user;
        xmlHttp.open("GET",url, true);
        xmlHttp.onreadystatechange = handleServerResponse;
        xmlHttp.send(null);
        //alert(user);
    }
    else
    {

        setTimeout('process()', 1000);
    }
}


function handleServerResponse()
{
    if(xmlHttp.readyState==4||xmlHttp.readyState==0)
    {
        if(xmlHttp.status==200)
        {
            xmlResponse = xmlHttp.responseXML;
            xmlDocumentElement = xmlResponse.documentElement;
            alert(xmlDocumentElement);      // [object element]
            message = xmlDocumentElement.firstChild.data;
            alert(message);                 // undefined
            document.getElementById("errorprompt").innerHTML = message;
        }
        else
        {
            alert("something went wrong");
        }
    }
}

login.php文件如下 -

<?php
header("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
echo '<root>';
    $user=$_GET['user'];
    $userArray=array("vishalkhare39@gmail.com","khare39vishal@rediffmail.com");
    if(in_array($user,$userArray))
        echo '<div class="alert alert-success fade in"><a href="#" class="close" data-dismiss="alert" aria-label="close">;</a><strong>Danger!</strong> This alert box could indicate a dangerous or potentially negative action.</div>';
    else
        echo '<div class="alert alert-danger fade in"><a href="#" class="close" data-dismiss="alert" aria-label="close">;</a><strong>Danger!</strong> This alert box could indicate a dangerous or potentially negative action.</div>';
echo '</root>';
?>

我的问题是我无法通过document.getElementById("errorprompt").innerHTML = message;

打印所需的讯息

我发现alert(xmlDocumentElement);正在显示[object element]alert(message)正在显示undefined

请让我知道理想情况下应该alert(xmlDocumentElement)打印什么?

当我将handleServerResponse()的代码更改为以下 -

时,也很有趣
function handleServerResponse()
{
    if(xmlHttp.readyState==4||xmlHttp.readyState==0)
    {
        if(xmlHttp.status==200)
        {
            xmlDoc=xmlHttp.responseXML;
            message=xmlDoc.getElementsByTagName("root")[0].textContent;
            document.getElementById("errorprompt").innerHTML = message;
        }
        else
        {
            alert("something went wrong");
        }
    }
}

现在从XML打印标签'root'的文本内容。但现在问题是它没有打印任何标记代码,如<div class="example">等,因为样式不是所希望的。

请帮帮我。我无法在任何地方找到任何有用的资源,并浪费了很多时间。 请给出一个解决方案,以便我如何设置消息变量等于完全响应php脚本抛出的内容。(包括标记)

0 个答案:

没有答案