AJAX检索xml响应

时间:2012-05-24 06:07:13

标签: javascript xml ajax

我有2个.jsp页面。

The 1. one contains just a xml structure for applicants:

<% response.setContentType("text/xml") ; %>

    <applicant>
     <citizenship>GERMANY</citizenship>
     <residence>Inc.</residence>
     <street>9500 Gilman Drive</street>
     <city>La Jolla</city>
     <state>USA</state>
     <countryTelCode>Vandelay Industries</countryTelCode>
     <zipCode>Inc.</zipCode>
     <areaCode>9500 Gilman Drive</areaCode>
     <telNumber>La Jolla</telNumber>
     <major>USA</major>
     <awarded>Vandelay Industries</awardeds>
     <gpa>Inc.</gpa>
     <specialization>9500 Gilman Drive</specialization>
    </applicant>

第二个尝试从标签中检索德语并将其打印在以下“...”字段中:

<span id="Citizenship">...</span>

在调用showCustomer()后使用此代码:

<script type="text/javascript">
    function showCustomer() {
        var xmlHttp;

        xmlHttp = new XMLHttpRequest();
        if (xmlHttp == null) {
            alert("Your browser does not support AJAX!");
            return;
        }
        var url = "getApplicant_xml.jsp";

        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4) {
                var xmlDoc = xmlHttp.responseXML.documentElement;
                document.getElementById("Citizenship").innerHTML = xmlDoc.getElementsByTagName("citizenship")[0].childNodes[0].nodeValue;

            }

        }
        xmlHttp.open("GET", url, true);

        xmlHttp.send(null);
    }
    }
</script>

不幸的是它没有打印任何东西.... 如果有人发现我的错误,我会非常感激。

谢谢

1 个答案:

答案 0 :(得分:1)

您的问题是xmlHttp.responseXML为null。您需要从xmlHttp.responseText解析一个新的DOM对象。我修改了代码。

<script type="text/javascript">
function showCustomer() {
    var xmlHttp;
    xmlHttp = new XMLHttpRequest();
    if (xmlHttp == null) {
        alert("Your browser does not support AJAX!");
        return;
    }
    var url = "getApplicant_xml.jsp";
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            var xmlDoc = xmlHttp.responseText;
            xmldom = (new DOMParser()).parseFromString(xmlDoc, 'text/xml');
            text = xmldom.getElementsByTagName("citizenship")[0];
            document.getElementById("Citizenship").innerHTML = text.childNodes[0].nodeValue;
        }
    };
    xmlHttp.open("GET", url, true);

    xmlHttp.send(null);
};
</script>