ajax实现xml传list

servlet:

public void getCities(HttpServletRequest request,HttpServletResponse response) throws IOException{
response.setContentType("text/xml;charset=utf-8");
//ie禁用缓存
response.setHeader("Cache-Control", "no-cache"); 
String proId = request.getParameter("proId");
System.out.println("proId:"+proId);
//获取spring容器
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
//从spring容器中,取出了 UniversityServiceInter 类型的bean
CityService cityService = (CityService) ctx.getBean("cityService");

List<City> cities = cityService.findCities(Integer.valueOf(proId));
//去掉死循环           json实现有加载set的问题    由于很复杂   暂时放弃研究
// JsonConfig jsonConfig = new JsonConfig();
// jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
//
// JSONArray json = JSONArray.fromObject(cities,jsonConfig);
// out.println(cities.toString());

//使用xml传递信息
//在js中未找到转换的解决办法(将字符串转换成xml)  值查找到ie的方法     360不详  我用的360 由于时间原因  暂时放弃研究
// String res = "<allCities>";
// for (int i = 0; i < cities.size(); i++) {
// City city = cities.get(i);
// res += "<city><id>" + city.getId() + "</id><name><![CDATA["
// + city.getName() + "]]></name></city>";
// }
// res += "</allCities>";
//XMLWriter out2 = new XMLWriter(response.getOutputStream());

//最终选择在servlet中完成字符串到xml的转换
Document doc = listToDocument(cities);
XMLWriter out = new XMLWriter(response.getOutputStream());
out.write(doc);
//out.write(res);
out.close();

}

private Document listToDocument(List<City> list){
Document document = DocumentHelper.createDocument();
Element regions = document.addElement("allCities");
for(City r : list){
Element region = regions.addElement("city");
region.addElement("id").setText(r.getId()+"");
region.addElement("name").setText(r.getName());
}

return document;
  }

ajax:

function getCities(){
getXmlHttpRequest(); //具体方法就不写了  都懂
var proId = $("#pro").val();
alert("proId"+proId);
xmlhttp.open("get","regServlet?tag=getCities&proId="+proId);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
/* var str = xmlhttp.responseText;
alert("back");
var map = new Map();
//var content = "";
for(var i = 0;i<json.length;i++){
//content +="<tr><td>"+json[i].id+"</td><td>"+json[i].pname+"</td><td>"+json[i].price+"</td><td>"+json[i].pdate+"</td></tr>"
map.put(json[i].id,json[i].name);
}
//document.getElementById("tby").innerHTML = content;*/
var map = new Map();
// alert(xmlhttp.responseText);
// var cities = new ActiveXObject("Microsoft.XMLDOM");//Microsoft.XMLDOM   MSxml2.DOMDocument  这里是上面提到的ie解决方案
// cities.loadXML(xmlhttp.responseText);
//var cities = xmlhttp.responseXML.getElementsByTagName("city");
//cities.getElementsByTagName("city");
   var cities = xmlhttp.responseXML.getElementsByTagName("city");
   //var content = "#{";
for (var i = 1; i <= cities.length; i++) {

//最终使用option添加的方法
$("#city").append("<option value='"+cities[i - 1].childNodes[0].childNodes[0].data+"'>"
+cities[i - 1].childNodes[1].childNodes[0].data+"</option>");
//实践证明: 直接将数据加入list中无效  
// if(i!=1){
// content += ",";
// }
// content += cities[i - 1].childNodes[0].childNodes[0].data+":'"+cities[i - 1].childNodes[1].childNodes[0].data+"'";
}
//content +="}";

//$("#city").attr("list",content);
//$("#city").attr("listKey","key");
//$("#city").attr("listValue","value");
}
}
xmlhttp.send();
}

最后strts2 关于select标签的使用:

<s:select id="city" class="write_date2" list="#{ }" headerKey="0" headerValue="城市" ></s:select>

list的必须这么写  如果写 list=""  则报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值