javascript - 帮忙用 javascript 解析 XML?

标签 javascript xml

我正在尝试使用 Java 脚本作为基于 Java 的 Restful Web 服务的客户端。该服务是一个调查制作者。我无法使该功能正常工作。该服务的服务器端位于 Google App Engine 中。在下面的代码中,该函数使用 http get 获取表示调查名称列表的 xml,然后从 xml 获取数据并将其放入 html 表中。该代码无法正常工作,因此如果有人可以检查它以查看我是否正确执行此操作或我做错了什么,那就太好了。我从来没有用 javascript 编程过,所以我也想知道我是否需要导入库才能使用 AJAX,或者浏览器是否支持它?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="en-us" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>View Surveys</title>
</head>
<SCRIPT>
function getSurveyNames(){

    var url = "http://survey-creator.appspot.com/rest/surveymakerpro/allsurveys";
    var xmlhttp;
    // AJAX code for Mozilla, Safari, Opera etc.
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = xmlhttpChange;
        xmlhttp.open("GET", url, true);
        xmlhttp.send(null);
    }
    // AJAX code for IE
    else 
        if (window.ActiveXObject) {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            if (xmlhttp) {
                xmlhttp.onreadystatechange = xmlhttpChange;
                xmlhttp.open("GET", url, true);
                xmlhttp.send(null);
            }
        }
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

        HTMLSurveyNames = "<table border='1'><tr>Survey Names<th></th></tr>";

        var surveyNames = xmlhttp.responseXML.documentElement.getElementsByTagName("surveys")[0];


        for(var i = 0; i < surveyNames.length ;i++){

            var surveyNameChildNode = surveyName[i].childNodes[0];
            var name = surveyNameChildNode.nodeValue;

            HTMLSurveyNames += "<tr><td>"+name+"</td></tr>";
        }
        //div tags
        document.getElementById('displayNames').innerHTML = HTMLSurveyNames;

    }
}
</SCRIPT>
<body>

<p>View Survey</p>
<form method="post">
    <input name="GetSurveys" style="width: 103px" type="button" value="View all surveys" onClick=getSurveyNames(); /></form>
<p>Here Goes a Table of Surveys</p>
<div id="displayNames">

    <p>Enter the survey you wish to take:</p>
    <form method="post">
        <input id="surveyName" name="SurveyName" style="width: 140px" type="text" value="Enter Survey Name...." /></form>
    <form method="post">
        <input name="Submit2" type="submit" value="Get Survey" /></form>
    <div id="displaySurvey"></div>

</div>
<p>
        <input id="sendtoserver" name="Submit3" type="submit" value="Submit TakenSurvey" /></p>

</body>

</html>

这是我要解析的xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><surveyNames><SurveyList><surveys>DragonBallZ</surveys><surveys>FootballSurvey</surveys><surveys>NewsSurvey</surveys><surveys>PennstateSurvey</surveys></SurveyList></surveyNames>

最佳答案

  1. 您正在发送一个异步请求,但随后尝试在该请求完成之前立即处理结果。

  2. 您应该为 xmlhttp.onreadystatechange 分配一个处理程序这将随着您的请求的进行而执行。您当前分配 xmlhttpChange到这个属性,但你不显示什么 xmlhttpChange是。你应该做这样的事情:

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            // XML parsing code goes here
        }
    }
    
  3. 您无需导入任何库即可使用 Ajax

  4. 小心 HTMLSurveyNames = "<table border='1'><tr>Survey Names<th></th></tr>"; 这样的行您应该始终使用 var声明变量时的关键字,以避免隐式创建/修改全局变量。

关于javascript - 帮忙用 javascript 解析 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5365999/

相关文章:

Java:可视化 xml 编辑器和树可视化器 swing 组件我可以嵌入到我的应用程序中吗?

java - 未调用 BeanPostProcessor

android - 如何使 dialogFragment 宽度与父级匹配?

c# - 在 C# 中修改单个 XML 属性

javascript - jquery 始终以英文格式为 google map API 检索数字

javascript - this.style.cursor ='hand' ,当我将鼠标悬停在元素上时第一次不工作

javascript - 表排序器排序和过滤不起作用

javascript - console.log($ ('.divs' ).click(<function>)) 显示一个 div 数组... click 方法是否返回它所作用的对象?

c++ - Boost XML- Property Tree - 读取 xml 的详细错误信息

javascript - 如何确定javascript已经完成了某件事