//gxlu/nova/web/framework/util/Ajax.js begin /** * 封装Ajax前后台交互处理 * 交互对象Server端的RemoteCallServlet接口 * */ //==XML处理==Begin========================= /** * 浏览器xml文本加载,文本方式直接加载只有IE支持 * @param xml Xml文本 */ function getXMLFromString(xml){ alert(xml); var xmlDoc=false; //code for IE if(window.ActiveXObject){ xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(xml); }else{ alert("您的浏览器不支持xml文本加载!"); } alert(xmlDoc.xml); return xmlDoc; } /** * 远程xml加载 * @param url Xml文件地址 */ function getXMLFromString(url){ var xmlDoc=false; // code for IE if (window.ActiveXObject) { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async=false; xmlDoc.load(url); } // code for Mozilla, etc. else if (document.implementation &&document.implementation.createDocument) { xmlDoc= document.implementation.createDocument("","",null); xmlDoc.load(url); xmlDoc.onload=getmessage }else { alert('您的浏览器不支持远程xml加载!'); } return xmlDoc; } //==XML处理==End========================= //XXX 原生调用 var http_request = false; //调用url、数据、反调函数、返回值类型(xml,text) function asynchro_request(url,data,handle,rtType) {//初始化、指定处理函数、发送请求的函数 http_request = false; //开始初始化XMLHttpRequest 对象 if(window.XMLHttpRequest) { //Mozilla 浏览器 http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) {//设置 MiME 类别 http_request.overrideMimeType("text/xml"); } }else if (window.ActiveXObject) { // IE 浏览器 try{ http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { // 异常,创建对象实例失败 window.alert("不能创建 XMLHttpRequest 对象实例."); return false; } http_request.onreadystatechange = function processRequest(){ if (http_request.readyState == 4) { // 判断对象状态 if(http_request.status == 200) { // 信息已经成功返回,开始处理信息 //默认返回数据已经是UTF-8编码 if(rtType!=undefined&&rtType=="text"){ var rt=http_request.responseText; handle(rt); }else{ var rt=http_request.responseXML; handle(rt); } } else { //页面不正常 alert("您所请求的页面有异常。"); } } }; // 确定发送请求的方式和 URL 以及是否同步执行下段代码 http_request.open("POST", url, true); http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); http_request.send(data); //alert("同步发送,当前Alert方法不能中断程序执行,数据很快将返回!") } //test function asynchro_returnData(v){ alert(v); } //test function asynchro_sendTest(handle,rtType){ var url="http://localhost:8888/nova/RemoteWebCallServlet"; var sdata="queryxml=" +""; if(handle!=undefined){ if(rtType!=undefined){ asynchro_request(url,sdata,handle,rtType); }else{ asynchro_request(url,sdata,handle); } }else{ if(rtType!=undefined){ asynchro_request(url,sdata,asynchro_returnData,rtType); }else{ asynchro_request(url,sdata,asynchro_returnData); } } } //同步请求处理 function synchro_request(url,data,handle,rtType){ var http_request = false; //开始初始化XMLHttpRequest 对象 if(window.XMLHttpRequest) { //Mozilla 浏览器 http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) {//设置 MiME 类别 http_request.overrideMimeType("text/xml"); } }else if (window.ActiveXObject) { // IE 浏览器 try{ http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { // 异常,创建对象实例失败 window.alert("不能创建 XMLHttpRequest 对象实例."); return false; } http_request.open("POST",url,false); http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); http_request.send(data); if(rtType!=undefined&&rtType=="text"){ var rt=http_request.responseText; handle(rt); }else{ var rt=http_request.responseXML; handle(rt); } } // function synchro_sendTest(){ var url=document.getElementById("send_url").value; var sdata=document.getElementById("send_data").value; if(sdata==""){ sdata="Nothing!"; }else{ sdata="queryxml="+escape("此方法的同步方式取决于open方法中的bAsync参数"); } synchro_request(url,sdata,function(v){document.getElementById("get_data").value=v;}) } /** * 同步方式远程调用,提交是以xml方式提交(注意暂时没有支持IE以外的浏览器) * 目的是解决直接Post数据的时候大文本不能提交,而以Xml对象方式提交是允许的 * @param url 提交url地址 * @param data xml文本 * @param rtType text/xml */ function synchro_return_request(url,data,rtType){ var http_request = false; //开始初始化XMLHttpRequest 对象 if(window.XMLHttpRequest) { //Mozilla 浏览器 http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) {//设置 MiME 类别 http_request.overrideMimeType("text/xml"); } }else if (window.ActiveXObject) { // IE 浏览器 try{ http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { // 异常,创建对象实例失败 window.alert("不能创建 XMLHttpRequest 对象实例."); return false; } http_request.open("POST",url,false); http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //http_request.setRequestHeader("Content-Length",data.length);//上传信息长度 http_request.send(data);//上传的是Xml对象,不是普通param=value形式 if(rtType!=undefined&&rtType=="text"){ var rt=http_request.responseText; //http_request=false; return rt; }else{ var rt=http_request.responseXML; // http_request=false; return rt; } } /** * 同步方式远程调用,直接在url中包含参数【GET方式】 * @param url 提交url地址 * @param rtType text/xml */ function synchro_return_request_get(url,rtType){ var http_request = false; if(navigator.userAgent.indexOf('MSIE') == -1){ XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (sXpath) { var x = this.selectNodes(sXpath) if ( ! x || x.length < 1 ) return null ; return x[0]; } XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (sXpath) { var xpathObj=new XPathEvaluator(); if(xpathObj){ var result=xpathObj.evaluate(sXpath,this,null,XPathResult.ORDERED_NODE_ITEARTOR_TYPE,null); var nodes=new Array(); var node; while((node = result.iterateNext())!=null) { nodes.push(node); } return nodes; }else{ return null; } } } //开始初始化XMLHttpRequest 对象 if(window.XMLHttpRequest) { //Mozilla 浏览器 http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) {//设置 MiME 类别 http_request.overrideMimeType("text/xml"); } }else if (window.ActiveXObject) { // IE 浏览器 try{ http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { // 异常,创建对象实例失败 window.alert("不能创建 XMLHttpRequest 对象实例."); return false; } http_request.open("GET",url,false); http_request.send(null); if(rtType!=undefined&&rtType=="text"){ var rt=http_request.responseText; return rt; }else{ var rt=http_request.responseXML; return rt; } } /** * 处理字串中的特殊字符:+(加号) '(单引号) "(双引号) /(路径) */ function URLencode(sStr){ return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F'); } //gxlu/nova/web/framework/util/Ajax.js end