Ajax应用示例: XMLHttpRequest封装
来源:互联网 发布:java instance单例 编辑:程序博客网 时间:2024/06/09 22:22
XMLHttpRequest封装在HttpClient.js文件内,代码如下:
HTML页面实现功能:可以以返回XML文档对象或者返回文件对象的形式,读取a.xml的内容并显示在当前页面内;代码如下:
文章参考自:http://blog.csdn.net/bianzhiqi/article/details/4640700
function HttpClient(){} HttpClient.prototype={ //传给open方法的GET或者POST类型 requestType: 'GET', //设置为TRUE时将发生异步调用 ,false时为同步调用 isAsync: false, //指定XMLHttpRequest返回的是文本对象还是XML文档对象 isGetXML: false, //保存XMLHttpRequest实例的地方 xmlhttp: false, //发送了一个成功的异步调用后将调用的内容 callback: false, //当调用XMLHttpRequest的send方法时将调用的内容 //自定义 ,不用的话注释掉即可。 onSend: function(){ document.getElementById("HttpClientStatus").style.display='block'; }, //当readyState的值为4时将调用的内容,在回调函数之前进行 //自定义 ,不用的话注释掉即可。 onLoad: function(){ document.getElementById("HttpClientStatus").style.display='none'; }, //当出现http错误时将调用的内容 onError: function(error){ alert(error); }, //实例化一个xmlhttpclient init: function(){ try{ //对于Firefox和Opera等浏览器 this.xmlhttp=new XMLHttpRequest(); //有此版本的Mozilla浏览器在处理服务器返回的包含XML mime-type头部信息内容时会出错。 //所以,为了确保返回内容是text/xml信息,需要包含下面的语句。 if(xmlrequest.overrideMimeType) { xmlrequest.overrideMimeType("text/xml"); } }catch(e){ //对于IE浏览器 var XMLHTTP_IDS=new Array('Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Micrsoft.XMLHTTP'); var success=false; for(var i=0;i<XMLHTTP_IDS.length && !success;i++){ try{ this.xmlhttp=new ActiveXObject(XMLHTTP_IDS[i]); success=true; break; }catch(e){ } } if(!success){ this.onError('Unable to create XMLHttpRequest.'); } } }, //用来处理readyState改变的内部方法 _readyStateChangeCallback: function(){ switch(this.xmlhttp.readyState){ case 2: this.onSend();break; case 4: this.onLoad(); if(this.xmlhttp.status==200){ if(this.isGetXML) this.callback( this.xmlhttp.responseXML); else this.callback(this.xmlhttp.responseText); }else{ this.onError('HTTP ERROR MAKING REQUEST: '+ '['+this.xmlhttp.status+']'+ this.xmlhttp.statusText); } break; } }, //发起页面请求的方法 //@ url,字符串型,为请求的页面 //@ playload ,字符串型,如果是post请求就需要 makeRequest: function(url,payload){ if(!this.xmlhttp){ this.init(); } try{ this.xmlhttp.open(this.requestType,url,this.isAsync); }catch(e){ alert('error'); } var self=this; this.xmlhttp.onreadystatechange=function(){ //回调函数 self._readyStateChangeCallback(); } this.xmlhttp.send(payload); if(!this.isAsync){ if(this.isGetXML) return this.xmlhttp.responseXML; else return this.xmlhttp.responseText; } } }
要读取的xml文件,a.xml如下:
<html><head><title>Hello, Ajax!</title></head><body>I am there.</body></html>
HTML页面实现功能:可以以返回XML文档对象或者返回文件对象的形式,读取a.xml的内容并显示在当前页面内;代码如下:
<!DOCTYPE html><html> <head> <title>HttpClientTest</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <script type="text/javascript" src="HttpClient.js" mce_src="HttpClient.js"></script> <script type="text/javascript" > var client=new HttpClient(); client.isAsync=true; client.isGetXML=false; function test(){ client.callback=function(result){ /* //isGetXML设置为true时,返回的是XML文档对象 var title = result.getElementsByTagName("title")[0].childNodes[0].nodeValue; alert(title); document.getElementById('target').innerHTML=title; */ //isGetXML设置为false时,返回的是文本 alert(result); document.getElementById('target').innerHTML=result; } client.makeRequest('a.xml',null); } </script> <body> <div id="HttpClientStatus" style="display:block" mce_style="display:none">Loading....</div> <a href="javascript:test()" mce_href="javascript:test()"> Make an Async Test call</a> <div id='target'></div> </body> </html>
文章参考自:http://blog.csdn.net/bianzhiqi/article/details/4640700
- Ajax应用示例: XMLHttpRequest封装
- JS-封装 ajax XmlHttpRequest
- 原生ajax示例XMLHttpRequest
- AJAX原始应用XMLHttpRequest
- XMLHttpRequest编写AJAX应用步骤
- Ajax简单应用示例: XMLHttpRequest对象实例化方式及调用
- 对AJAX中XMLHttpRequest的封装
- Ajax之工厂模式封装XMLHttpRequest
- XmlHttpRequest CORS 与 AJAX封装类
- 一个ajax通用函数(xmlhttprequest封装)
- 【Ajax 2】封装Ajax的核心对象:XMLHttpRequest对象
- Ajax技术之Ajax重构(封装XMLHttpRequest)
- AJAX中XMLHttpRequest的简单应用
- Ajax应用之XMLHttpRequest对象重用(IE)
- ajax应用中的xmlHttpRequest-属性和方法
- AJAX初级应用——XMLHttpRequest对象
- XMLhttpRequest 封装
- Ajax应用简单示例
- C#.net 简介
- [ios] xcode 4.2 创建 adhoc 发布应用测试方法
- 使用myEclipse看JAR源码的时候出现乱码
- HttpClient cokie会话保持
- 市场营销学2——顾客满意与顾客让渡价值
- Ajax应用示例: XMLHttpRequest封装
- hashCode的作用
- php与mysql的utf-8乱码问题
- HashMap HashTable区别
- 一段代码为安身!(2)
- 开放平台:新浪微博 for iOS
- C语言总结
- POJ1724 价格合适的最短路(广搜BFS)
- 切线空间(tangent space)