ajax请求返回xml数据(含服务端代码)

ajax技术目前已经被jquery包装的比较完美,但自己使用的地方仍然很多,所以需要自己能够自定义ajax方法。

以下是从前端ajax发出请求,后台响应返回xml数据,ajax接收并处理的完整过程,实例简单易懂,可以根据实际情况进行修改。

后台代码为Java。


jsp页面

<script>

//定义ajax引擎

var myXmlHttpRequest="";

//获取ajax引擎函数

function getXmlHttpObject(){
var xmlHttpRequest;
//不同的浏览器获取对象xmlhttprequest 对象方法不一样
if(window.ActiveXObject){
xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}else{
xmlHttpRequest=new XMLHttpRequest();
}
return xmlHttpRequest;
}

主函数

function getTqByAjax(){

myXmlHttpRequest=getXmlHttpObject();
//判断创建ok
if(myXmlHttpRequest){
//通过myXmlHttpRequest对象发送请求到服务器的某个页面
var url="<c:url value='/preInfo.tq?method=getTqByAjax'/>";
//这个是要发送的数据
var data=""; //我这里为空
//打开请求.
myXmlHttpRequest.open("post",url,true);
//还有一句话,这句话不能少.
myXmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//指定回调函数.chuli是函数名
myXmlHttpRequest.onreadystatechange=chuli;
//真的发送请求,如果是get请求则填入 null即可
//如果是post请求,则填入实际的数据
myXmlHttpRequest.send(data); 
}

}


//回调函数,接收数据并处理

function chuli()[

//window.alert("处理函数被调回"+myXmlHttpRequest.readyState);
if(myXmlHttpRequest.readyState==4){
var xmlDoc=myXmlHttpRequest.responseXML;
//取出mes节点值
var mes=xmlDoc.getElementsByTagName("mes");

//window.alert(mes.length);
//mes[0]->表示取出第一个mes节点
//mes[0].childNodes[0]->表示第一个mes节点的第一个子节点

window.alert(mes[0].childNodes[0].nodeValue);
//这里写你的代码

//………………

}


}
</script>


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Java后台

@RequestMapping(params = "method=getTqByAjax")
public void getTqByAjax (HttpServletRequest request,
HttpServletResponse response){

PrintWriter out = null;
try {
out = response.getWriter();
response.setContentType("text/xml"); //告诉浏览器返回的xml类型
response.setHeader("Cache-Control", "no-cache"); //告诉浏览器不要缓存数据
StringBuffer buf = new StringBuffer();
buf.append("<?xml version=\"1.0\" encoding=\"GBK\"?>");
buf.append("<res><mes>success</mes></res>");
out.println(buf);
out.flush();  

} catch (Exception e) {
// TODO: handle exception
}finally{

out.close(); //关闭流

}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值