利用extJs的ajax效能及结合js解析xml串无刷新显示数据
利用extJs的ajax功能及结合js解析xml串无刷新显示数据
利用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
});
}
利用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
});
}