Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript解析XML的帮助?_Javascript_Xml - Fatal编程技术网

使用javascript解析XML的帮助?

使用javascript解析XML的帮助?,javascript,xml,Javascript,Xml,我正在尝试使用Java脚本作为基于Java的restful web服务的客户端。该机构是一家调查机构。我无法使该函数正常工作。该服务的服务器端位于Google App Engine中。在下面的代码中,函数使用http get获取表示surveynames列表的xml,然后从xml获取数据并将其放入html表中。代码不起作用,所以如果有人能检查一下,看看我是做对了还是做错了,那就太好了。我从来没有用javascript编程,所以我也想知道我是否需要导入一个库来使用AJAX,或者浏览器是否支持它 &

我正在尝试使用Java脚本作为基于Java的restful web服务的客户端。该机构是一家调查机构。我无法使该函数正常工作。该服务的服务器端位于Google App Engine中。在下面的代码中,函数使用http get获取表示surveynames列表的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>

视图调查
函数getSurveyNames(){
变量url=”http://survey-creator.appspot.com/rest/surveymakerpro/allsurveys";
var-xmlhttp;
//用于Mozilla、Safari、Opera等的AJAX代码。
if(window.XMLHttpRequest){
xmlhttp=新的XMLHttpRequest();
xmlhttp.onreadystatechange=xmlhttpChange;
open(“GET”,url,true);
xmlhttp.send(空);
}
//IE的AJAX代码
其他的
if(window.ActiveXObject){
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
if(xmlhttp){
xmlhttp.onreadystatechange=xmlhttpChange;
open(“GET”,url,true);
xmlhttp.send(空);
}
}
if(xmlhttp.readyState==4&&xmlhttp.status==200){
HTMLSurveyNames=“调查名称”;
var surveyNames=xmlhttp.responseXML.documentElement.getElementsByTagName(“调查”)[0];
对于(变量i=0;i
下面是一张调查表

输入您希望进行的调查:

这就是我要解析的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>
DragonBallZFootballSurveyNewsSurveyPennstateSurvey
  • 您正在发送一个异步请求,但随后尝试在该请求完成之前立即处理结果

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

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            // XML parsing code goes here
        }
    }
    
  • 使用Ajax不需要导入任何库

  • 小心使用诸如
    HTMLSurveyNames=“测量名称”之类的行
    在声明变量时,应始终使用
    var
    关键字,以避免隐式创建/修改全局变量

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

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

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            // XML parsing code goes here
        }
    }
    
  • 使用Ajax不需要导入任何库

  • 小心使用诸如
    HTMLSurveyNames=“测量名称”之类的行
    在声明变量时,应始终使用
    var
    关键字,以避免隐式创建/修改全局变量

  • “调查名称”
    
    应该是

    "<table border='1'><tr><th>Survey Names</th></tr>"
    
    “调查名称”
    
    事情会好得多

    有一个跨浏览器的javascript XML库,位于 我相信XMLHTTPRequest()是IE特有的。其他浏览器也有相应的版本

    “调查名称”
    
    应该是

    "<table border='1'><tr><th>Survey Names</th></tr>"
    
    “调查名称”
    
    事情会好得多

    有一个跨浏览器的javascript XML库,位于
    我相信XMLHTTPRequest()是IE特有的。其他浏览器也有相应的版本

    您需要继续阅读。您需要继续阅读。顺便说一句,这里的
    //XML解析代码可以简化为
    //使用xmlhttp.reponseXML
    ,因为这是为调用提供的预解析属性(如果成功,并且我相信响应是正确的mime类型)@丹-对。我真的想说“XML处理到此为止”。好吧,我对代码做了一点修改,但仍然一无所获,我是否正确使用了DOM?@Delanoy-您是否能够在
    onreadystatechange
    处理程序中发出
    警报
    任何内容?最好是小步走。首先,验证您是否得到响应。然后,可能
    toString
    响应以确保它看起来正常。只有这样,您才应该尝试执行更复杂的操作。顺便说一句,这里的
    //XML解析代码
    可以简化为
    //使用xmlhttp.reponseXML
    ,因为这是为调用提供的预解析属性(如果成功,并且我相信响应是正确的mime类型)@丹-对。我真的想说“XML处理到此为止”。好吧,我对代码做了一点修改,但仍然一无所获,我是否正确使用了DOM?@Delanoy-您是否能够在
    onreadystatechange
    处理程序中发出
    警报
    任何内容?最好是小步走。首先,验证您是否得到响应。然后,可能
    toString
    响应以确保它看起来正常。只有这样,你才应该尝试做更复杂的事情。