CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  Ajax

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

楼主wenjason(Jason)2006-07-04 00:52:46 在 Web 开发 / Ajax 提问

我本机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   的朋友指教,谢谢! 问题点数:20、回复次数:5Top

1 楼yesur(夜隼)回复于 2006-07-04 10:05:37 得分 0

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,Top

2 楼wenjason(Jason)回复于 2006-07-04 10:55:35 得分 0

非常感谢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>里还是没有东西出来,不知道是怎么回事?Top

3 楼wenjason(Jason)回复于 2006-07-04 13:05:43 得分 0

我刚才输出了   alert(nodeList.length)   来看,发现是0,怪不得没有内容出来。  
  请高手支招,谢谢了!Top

4 楼wenjason(Jason)回复于 2006-07-05 13:15:47 得分 0

为了高手能看到,我顶起来……Top

5 楼yesur(夜隼)回复于 2006-07-11 15:10:12 得分 0

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

相关问题

关键词

得分解答快速导航

  • 帖主:wenjason

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo