java 返回xml jquery处理

本文介绍了一个使用Struts框架实现的城市数据AJAX加载功能。该功能通过后台获取指定ID的城市列表,并将其转换为XML格式返回给前端。前端通过jQuery发起AJAX请求,将返回的数据解析并填充到下拉框中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import com.autotoll.jv.erp.proxy.PortletActionBeanProxy;
import com.liferay.portal.struts.AJAXAction;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.WebKeys;
import com.autotoll.jv.pojo.impl.Citytable;

public class ShowCityAjax extends AJAXAction{

public String getText(ActionMapping arg0, ActionForm arg1,
HttpServletRequest request, HttpServletResponse response) throws Exception {

ThemeDisplay themeDisplay =
(ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
String language = themeDisplay.getLanguageId();

String pid = request.getParameter("pid");
String cityId = "";
String cityName = "";

Document document = DocumentHelper.createDocument();
Element root = document.addElement("city");

if (pid !=null && ! pid.trim().equals("")) {
List<Citytable> list =
PortletActionBeanProxy.getInstance().
getCityTableSvc().findCityByPId(Long.parseLong(pid));
if (list !=null && list.size()>0) {
for (Citytable city :list) {
cityId = city.getCityid().toString();
if(language.trim().equals("zh_CN")) {
cityName = city.getCitynameSc();
} else if(language.trim().equals("zh_TW")) {
cityName = city.getCitynameTc();
} else {
cityName = city.getCitynameEng();
}
Element cId = root.addElement("cityId");
Element cName = root.addElement("cityName");
cId.addText(cityId);
cName.addText(cityName);
}
}
}
// System.out.println(root.asXML());
return root.asXML();
}


jsp 页面:
function toXML(strxml){    
try{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML(strxml);
} catch(e){
var oParser=new DOMParser();
xmlDoc=oParser.parseFromString(strxml,"text/xml");
}
return xmlDoc;
}

function getCity(obj){
var pid = obj.options[obj.selectedIndex].value;
if (pid != "") {
jQuery.ajax(
{url: '<%= themeDisplay.getPathMain() %>/erp/showCity',
data: {pid:pid},
success: setOptions});
} else {
var selectObj = document.getElementById('city_');
selectObj.options.length = 0;
selectObj.options.add(new Option('<liferay-ui:message key="erp.select.option.choose"/>',""));
document.getElementById("address-alert-span").style.display = "";
}
}

function setOptions(xml) {
var radioValue = getRadioValue();
var selectObj = document.getElementById('city_');
selectObj.options.length = 0;
var xmlobj = toXML(xml);
var cidArr = xmlobj.getElementsByTagName('city/cityId');
var cNameArr = xmlobj.getElementsByTagName('city/cityName');
selectObj.options.add(new Option('<liferay-ui:message key="erp.select.option.choose"/>',""));
for(var i=0; i<cidArr.length; i++){
selectObj.options.add(new Option(cNameArr[i].childNodes(0).nodeValue,cidArr[i].childNodes(0).nodeValue));
}
document.getElementById('city').value=cidArr[0].childNodes(0).nodeValue;
if (document.getElementById('city').value != "" && document.getElementById('address').value != "") {
document.getElementById("address-alert-span").style.display = "none";
} else {
document.getElementById("address-alert-span").style.display = "";
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值