使用prototype-1.3.1.js返回XML数据如何显示到下拉列框?

wenjason 2006-07-04 12:52:46
我本机http://localhost/XML/Province_List.asp?StateID=1 运行结果是一个XML格式的文档:

<?xml version="1.0" encoding="UTF-8"?>
<StateInfo StateID="1">
<ProvinceInfo ProvinceID="1" ProvinceNM="北京市"/>
<ProvinceInfo ProvinceID="2" ProvinceNM="天津市"/>
<ProvinceInfo ProvinceID="3" ProvinceNM="上海市"/>
<ProvinceInfo ProvinceID="4" ProvinceNM="重庆市"/>
<ProvinceInfo ProvinceID="5" ProvinceNM="广东省"/>
<ProvinceInfo ProvinceID="6" ProvinceNM="辽宁省"/>
<ProvinceInfo ProvinceID="7" ProvinceNM="陕西省"/>
<ProvinceInfo ProvinceID="8" ProvinceNM="四川省"/>
......
</StateInfo>

以上数据在下面的 test.htm 里调用:
如果将XML文档的文本内容放到多行文本框(id=result)里是没有问题了,但是我希望将XML的数据放到下拉列表框(name="ProvinceID")里,就不懂该怎么做了。
<Script language="JavaScript" src="JavaScript/prototype-1.3.1.js"></Script>
<script>
function SearchStateID()
{
var StateID=$F("StateID");
var url="http://localhost/XML/Province_List.asp";
var pars="StateID=" + StateID;

var ProvinceAjax=new Ajax.Request(url,{method: "get", parameters: pars, onComplete: showResponse});
}

function showResponse(originalRequest)
{
//put returned XML in the textarea
$("result").value=originalRequest.responseText;
}
</script>
<select id="StateID" size="5" style="width:180px;" onchange="SearchStateID()">
  <option value="1">中国</option>
  <option value="2">美国</option>
</select>
<br>
<textarea id=result cols=80 rows=10 ></textarea>
<br>
<select name="ProvinceID" style="width:300px;">
<option value="0">请选择省份</option>
</select>

请知道怎么使用 prototype-1.3.1.js 的朋友指教,谢谢!
...全文
224 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesur 2006-07-11
  • 打赏
  • 举报
回复

var nodeList = objXml.selectNodes("/StateInfo/ProvinceInfo");
改成
var nodeList = objXml.getElementsByTagName("ProvinceInfo");
试试看,如果nodeList.length还为0的话,那就没办法了

wenjason 2006-07-05
  • 打赏
  • 举报
回复
为了高手能看到,我顶起来……
wenjason 2006-07-04
  • 打赏
  • 举报
回复
非常感谢yesur(夜隼),我将html控件使用id了,也将function showResponse(originalRequest) 的内容修改成以下:
function showResponse(originalRequest)
{
var objXml = originalRequest.responseXML;
var nodeList = objXml.selectNodes("/StateInfo/ProvinceInfo");
for(var i=0;i<nodeList.length;i++)
{
var objOption = document.createElement("Option");
objOption.value = nodeList[i].attributes[0].value;
objOption.text = nodeList[i].attributes[1].value;
document.getElementById("ProvinceID").add(objOption);
}
}

但是在<select>...</select>里还是没有东西出来,不知道是怎么回事?
yesur 2006-07-04
  • 打赏
  • 举报
回复
var objXml = originalRequest.responseXML;
var nodeList = objXml.selectNodes("/StateInfo/ProvinceInfo");
for(var i=0;i<nodeList.length;i++)
{
var objOption = document.createElement("Option");
objOption.value = nodeList[i].attributes[0].value;
objOption.text = nodeList[i].attributes[1].value;
document.getElementById("ProvinceID").add(objOption);
}
另外html控件请使用id代替name,
wenjason 2006-07-04
  • 打赏
  • 举报
回复
我刚才输出了 alert(nodeList.length) 来看,发现是0,怪不得没有内容出来。
请高手支招,谢谢了!

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧