使用javascript解析XML的帮助?
我正在尝试使用Java脚本作为基于Java的restful web服务的客户端。该机构是一家调查机构。我无法使该函数正常工作。该服务的服务器端位于Google App Engine中。在下面的代码中,函数使用http get获取表示surveynames列表的xml,然后从xml获取数据并将其放入html表中。代码不起作用,所以如果有人能检查一下,看看我是做对了还是做错了,那就太好了。我从来没有用javascript编程,所以我也想知道我是否需要导入一个库来使用AJAX,或者浏览器是否支持它使用javascript解析XML的帮助?,javascript,xml,Javascript,Xml,我正在尝试使用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
}
}
HTMLSurveyNames=“测量名称”之类的行
在声明变量时,应始终使用var
关键字,以避免隐式创建/修改全局变量xmlhttp.onreadystatechange
分配一个处理程序,该处理程序将随着请求的进行而执行。您当前将xmlhttpChange
分配给此属性,但未显示xmlhttpChange
是什么。你应该这样做:
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
// XML parsing code goes here
}
}
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
响应以确保它看起来正常。只有这样,你才应该尝试做更复杂的事情。