利用struts2做服务器端 extJs的ajax无刷新调用struts2刷新数据 还用到js解析服务器端返回的xml串 具体代码如下
struts2代码:
List payList = this.payMgrService.findAllPay(sortId);
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter outPrintWriter = null;
try {
outPrintWriter = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
String value = "fail";
if(!payList.isEmpty()){
value = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><pay><size>" + payList.size() + "</size>";
Map map = new HashMap();
for(int i=0;i<payList.size();i++){
map = (Map)payList.get(i);
value = value
+"<bussid>" + map.get("BUSS_ID") + "</bussid>"
+"<name>" + map.get("NAME") + "</name>"
+"<image>" + map.get("IMAGE") + "</image>"
+"<url>" + map.get("URL") + "</url>"
+"<state>" + map.get("STATE") + "</state>" ;
}
value = value + "</pay>";
}
outPrintWriter.write(value);
outPrintWriter.flush();
outPrintWriter.close();
extJs及js代码:
function clearTable(){
var tab = document.getElementById("contentTable");
for(var i=0;i<tab.rows.length;i++){
for(var j=0;j<tab.rows[i].cells.length;j++){
tab.rows[i].cells[j].innerHTML = "";
}
}
}
function showContent(sortId){
clearTable();
Ext.Ajax.request({
url : '../../notice/findAllPay.action',
success : function(msg) {
var res = msg.responseText;
if (res == "fail") {
clearTable();
} else {
var xmlDoc=null;
//判断浏览器的类型
//支持IE浏览器
if(!window.DOMParser && window.ActiveXObject){ //window.DOMParser 判断是否是非ie浏览器
var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
for(var i=0;i<xmlDomVersions.length;i++){
try{
xmlDoc = new ActiveXObject(xmlDomVersions[i]);
xmlDoc.async = false;
xmlDoc.loadXML(res); //loadXML方法载入xml字符串
break;
}catch(e){
}
}
}
//支持Mozilla浏览器
else if(window.DOMParser && document.implementation && document.implementation.createDocument){
try{
/* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。
* 要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法
* parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型
* 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意,不支持 "text/html"。
*/
domParser = new DOMParser();
xmlDoc = domParser.parseFromString(res, 'text/xml');
}catch(e){
}
}
try
{
var size = xmlDoc.getElementsByTagName("size")[0].childNodes[0].nodeValue;
for(var i=0;i<size;i++){
var name = xmlDoc.getElementsByTagName("name")[i].childNodes[0].nodeValue;
var image = xmlDoc.getElementsByTagName("image")[i].childNodes[0].nodeValue;
var url = xmlDoc.getElementsByTagName("url")[i].childNodes[0].nodeValue;
var state = xmlDoc.getElementsByTagName("state")[i].childNodes[0].nodeValue;
var content = "<a href='" + url + "' target=_blank onmouseover='changeBgColor("+i+")' onmouseout='resetBgColor("+i+")'><img src='images/"+ image + "' border='0'/><br><div style='margin-top:5px' id='div"+i+"'>" + name + "</div></a>";
document.getElementById("content" + i).innerHTML = content;
}
}catch(e){alert(e.message)}
}
},
params : {
sortId : sortId
},
disableCaching: true
});
}
分享到:
相关推荐
extjs ajax同步请求所需js extjs ajax同步请求所需js
tree 的所有功能 很难得的 我刚调试好 只需要把数据库url 用户名和密码修改 ,就可以运行 extjs 动态树 tree ajax 全部功能 10分一点都不多,绝对值得。
EXTJS AJAX方式发送数据给后台服务器
Extjs解析xml问题 Ext.onReady(function(){ var store=new Ext.data.Store({ url:'GridData.xml', reader:new Ext.data.XmlReader( {record:'Item'}, ["ASIN","Author","Manufacturer","Product...
extjs读取解析后端json格式数据并显示条形图,非常好看的特效,只能用炫酷来形容,感兴趣就下载看看吧,用在自己的网站觉得吸引眼球!
NULL 博文链接:https://esayjava.iteye.com/blog/499176
JavaScript ExtJS Ajax基础教程 快速入门
extjs ajax框架中文使用手册,extjs ajax框架中文使用手册
ExtJs最开始基于YUI技术,由开发人员 JackSlocum开发,通过参考JavaSwing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,到数据解析上的异常处理,都可算是 一款不可多得的JavaScript客户端技术的精品。 ...
NULL 博文链接:https://rayln.iteye.com/blog/1484628
php+extjs+grid实时显示更新数据
extjs中ajax网页无刷新与后台交互的代码实现,使用javascript开发的可以参照学习。。
完美的Extjs4 treePanel节点刷新,函数为自动刷新选中的节点.API看得头疼才别出来的代码.截止我发之前,好像没有谁共享这个功能的函数吧.
extjs4.2.1 tabPanel刷新及关闭标签
ExtJs3源码,有兴趣的朋友可以看看。
title的header表头名、width宽度、dataIndex映射名都可以根据外部定义的xml进行读取,便于将ExtJs的Grid封装
这个项目实现了开发中常见的所有功能,物有所值看了就知道有多好。
Extjs Ajax 购物车,直接下载是运行不了的,因为数据库你是没有的
对extjs时间的介绍,期待您的参与,我们一起努力
extjs3.0 ajax 同步请求