var xmlreq = false; //创建一个XMLHttpRequest对象
function newXMLHttpRequest() {
if (window.XMLHttpRequest) {
xmlreq = new XMLHttpRequest(); // 在非Microsoft浏览器中创建XMLHttpRequest对象
} else if (window.ActiveXObject) {
try { //通过MS ActiveX创建XMLHttpRequest
xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); // 尝试按新版InternetExplorer方法创建
} catch (e1) {
try { // 创建请求的ActiveX对象失败
xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); // 尝试按老版InternetExplorer方法创建
} catch (e2) {
// 不能通过ActiveX创建XMLHttpRequest
}
}
}
}
//发送请求函数-->业务流程
function sendXml(url, param){
if(url.length == 0){
return;
}else{
if( param == null || param == "undefined" ){
param = "";
}
newXMLHttpRequest();
try{
xmlreq.onreadystatechange=proce; //指定响应的函数 proce()
xmlreq.open("GET", url, true); //以GET方式传输数据,打开url,以异步方式
xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlreq.send(param); //发送请求
}catch(exception){
alert("您要访问的资源不存在!");
}
}
}
//回调函数
function proce(){
if(xmlreq.readyState == 4){ //对象状态
if(xmlreq.status == 200 || xmlreq.status == 0){ //信息已成功返回,开始处理信息;
alert(xmlreq.responseText);
parseXml(xmlreq.responseXML);
}else{
window.alert("所请求的页面有异常");
alert(xmlreq.statusText);
}
}
}
//解析xml文档
function parseXml(xmlDom){
var rootNode = xmlDom.documentElement;
if(rootNode == null){
return false;
}else{
for(var node = rootNode.firstChild; node != null; node=node.nextSibling){
var objName = node.nodeName;
var type = node.getAttribute("type");
if(type == "select"){
clearSelectOption(objName);
var opts = node.getElementsByTagName("option");
for(var i=0; i<opts.length; i++){
var optName = opts[i].firstChild.data;
var optValue = opts[i].getAttribute("value");
addSelectOption(objName, optValue, optName);
}
}
}
}
}
//往下拉列表框中写数据
function addSelectOption(objName, optValue, optName){
var elmtObj = document.getElementById(objName);
elmtObj.options[elmtObj.length] = new Option(optName, optValue);
}
//清空下拉列表框
function clearSelectOption(objName){
var elmtObj = document.getElementById(objName);
while(elmtObj.options.length > 0){
elmtObj.remove(0);
}
//elmtObj.options.length = 0;
}
function sendText(url, param){
if(url.length == 0){
return;
}else{
if( param == null || param == "undefined" ){
param = "";
}
newXMLHttpRequest();
try{
xmlreq.onreadystatechange=getText; //指定响应的函数 getText()
xmlreq.open("GET", url, true); //以GET方式传输数据,打开url,以异步方式
xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlreq.send(param); //发送请求
}catch(exception){
alert("您要访问的资源不存在!");
}
}
}
function getText(){
if(xmlreq.readyState == 4){ //对象状态
if(xmlreq.status == 200 || xmlreq.status == 0){ //信息已成功返回,开始处理信息;
alert(xmlreq.responseText);
}else{
window.alert("所请求的页面有异常");
alert(xmlreq.statusText);
}
}
}
操作类
package org.duzn.util;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
public class SOAData {
private StringBuffer sb = new StringBuffer();
private String objName = "";
public String getXmlDoc(){
return sb.toString();
}
public void beginSelectOptions(String objName){
this.objName = objName;
sb.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
sb.append("<root>");
sb.append("<" + objName + " type=\"select\">");
}
public void beginSelectOptions(String objName, int index){
this.objName = objName;
sb.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
sb.append("<root>" + "\n");
sb.append("<" + objName + " type=\"select\" index=\"" + index + "\">");
}
public void addSelectOption(String objContent, String objValue){
sb.append("<option value=\"" + objValue + "\">");
sb.append(objContent + "</option>");
}
public void endSelectOptions(){
sb.append("</" + this.objName + ">");
sb.append("</root>");
}
public void soaWrite(HttpServletResponse response, PrintWriter pw){
//设置输出的信息的格式及字符集
response.setContentType("text/xml; charset=GB2312");
response.setHeader("Cache-Control","no-cache");
pw.println(getXmlDoc());
pw.flush();
pw.close();
}
public static void main(String[] args){
SOAData soaData = new SOAData();
soaData.beginSelectOptions("dept");
soaData.addSelectOption("gdys", "1");
soaData.addSelectOption("dzgc", "2");
soaData.addSelectOption("jjgl", "3");
soaData.endSelectOptions();
System.out.println(soaData.getXmlDoc());
}
}
分享到:
- 2007-03-30 23:27
- 浏览 3390
- 评论(4)
- 论坛回复 / 浏览 (4 / 6646)
- 查看更多
相关推荐
使用Ajax实现级联菜单,采取XML响应方式实现,非常好用!
完整项目工程。 博文链接:https://plkong.iteye.com/blog/214447
Ajax-级联菜单 Ajax-级联菜单
AJAX实例的级联菜单,初学AJAX。
非常详细的一个级联菜单,很适合刚学ajax的朋友! 大家不懂的发送邮件给我,白天都在线! /** * js文件说明:实现 分公司-->支公司-->代理机构 三级下拉级联菜单 * 作者:朱亮</p> * 版本: 1.0</p> * 修改历史</p> ...
用Ajax实现的一个级联菜单,下拉菜单是从数据库中取数据的。
该实例为本人项目中使用的模块代码,经过专业测试人员测试,兼容所有主流浏览器,如有不解之处请联系本人
struts+hibernate+ajax级联菜单struts+hibernate+ajax级联菜单
包含数据库字段设计、jsp页面代码编写、最后的运行效果
运用Ajax实现3级的级联菜单。ajax是浏览器中的js程序向服务器端发送异步请求,返回的数据为json类型。
完整可运行的用jquery开发的ajax各种实例包括(级联菜单,谷歌式搜索提示,可编辑表格页面无刷新切换等)
这是一个级联菜单,使用ajax技术,采用了dwr框架,选择省份,城市自动加载,以此类推,可以实现多种级联效果
Ajax(jQuery)全国城市三级级联菜单插件,简单易用
Ajax_实现级联菜单
Ajax征服——无限级级联菜单 Ajax征服——无限级级联菜单