jquery的ajax:Ajax的工具類

來源:互聯網
上載者:User

var Ajax={
xhr: null,
ok : true,
xhrPool: [],
createXHRObj : function(){
var xhrObj;
try {
if(window.XMLHttpRequest){
xhrObj = new XMLHttpRequest();
}else if(window.ActiveXObject){
var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP','MSXML2.XMLHTTP.6.0'];
for(var i=0;i<MSXML.length;i++){
try{
xhrObj = new ActiveXObject(MSXML[i]);
break;
}catch(e){
}
}
}
if (xhrObj.readyState == null)
{
xhrObj.readyState = 0;
xhrObj.addEventListener("load", function (){
xhrObj.readyState = 4;
if (typeof xhrObj.onreadystatechange == "function")
{
xhrObj.onreadystatechange();
}
}, false);
}
return xhrObj;
} catch (e) {
alert("XMLHttpRequest建立錯誤!");
}
},
getXhrInstance:function(){
for(var i=0;i<this.xhrPool.length;i++){
if (this.xhrPool[i].readyState == 0 this.xhrPool[i].readyState == 4)
{
return this.xhrPool[i];
}
}
this.xhrPool[this.xhrPool.length] = this.createXHRObj();
return this.xhrPool[this.xhrPool.length-1];
},
init:function(){
this.xhrPool = new Array();
},
setHeader:function(key, value){
var xhrObj = this.xhr;
try{
xhrObj.setRequestHeader(key,value);
}catch(e){
alert("設定Header異常:"+e.message);
}
},
//按類型解析資料
_parse:function(text,dtype){
var _data = null;
if(dtype == 'JSON'){
_data = text;
return eval('('+ _data +')');
}
return text;
},
//cbobj必須包含callback函數
sendDataForJson:function(data, url,method, cbobj){
try{
var xhrObj = this.getXhrInstance();
var msg="";
for(i=0;i<data.length;i++){
var obj = data[i];
if(i == data.length-1){
var v = obj.value;
msg += obj.key+"="+encodeURIComponent(encodeURIComponent(v));
}else{
var v = obj.value;
msg += obj.key+"="+encodeURIComponent(encodeURIComponent(v))+"&";
}
}
if(method == "GET"){
xhrObj.open(method,url+"?randnum=" + Math.random()+ "&" +msg,true);
xhrObj.setRequestHeader("Content-Type", "text/html");
xhrObj.setRequestHeader("Cache-Control", "no-cache");
xhrObj.setRequestHeader("CustomDataType","JSON");
xhrObj.send(null);
}else if(method == "POST"){
xhrObj.open(method,url+"?randnum="+Math.random(),true);
xhrObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhrObj.setRequestHeader("Cache-Control", "no-cache");
xhrObj.setRequestHeader("Content-Length",msg.length);
xhrObj.setRequestHeader("Connection", "close");
xhrObj.setRequestHeader("CustomDataType","JSON");
xhrObj.send(msg);
}
var returnText = "";
xhrObj.onreadystatechange = function(){
if(xhrObj.readyState == 4){
if(xhrObj.status == 200){
returnText = xhrObj.responseText;
returnText = decodeURIComponent(decodeURIComponent(returnText));
cbobj.callback(Ajax._parse(returnText,xhrObj.getResponseHeader("CustomDataType")) );
}
}
//xhrObj.abort();
};
return returnText;
}catch(e){
alert('串連伺服器異常,錯誤原因:' + e.name + " 描述:" +e.message );
xhrObj.abort();
}
}
}
本文連結http://www.cxybl.com/html/wyzz/JavaScript_Ajax/20121127/34462.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.