function createXHR(){ if(typeof XMLHttpRequest != 'undefined'){ return new XMLHttpRequest(); }else if(typeof ActiveXObject != 'undefined'){ var version = [ 'MSXML2.XMLHttp.6.0', 'MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp', ]; for(var i=0; i<version.length; i++){ try{ return new ActiveXObject(version[i]); }catch(e){ } } }else{ throw new Error('您的系统或浏览器不支持XHR对象!'); } } //名值对转换字符串 function params(data){ var arr=[]; for(var i in data){ arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i])); } return arr.join('&'); } //封装Ajax function ajax(obj){ var xhr = new createXHR(); obj.url = obj.url + '?rand='+ Math.random(); obj.data = params(obj.data); if(obj.method == 'get')obj.url += obj.url.indexOf('?') == -1 ? '?' +obj.data : '&' + obj.data ; if(obj.async === true){ xhr.onreadystatechange=function(){ if(xhr.readyState == 4){ callback(); } } } xhr.open(obj.method, obj.url, obj.async); if(obj.method === 'post'){ xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send(obj.data); }else{ xhr.send(null); } if(obj.async === false){ callback(); } function callback(){ if(xhr.status == 200){ obj.success(xhr.responseText); }else{ console.log("获取数据错误!错误代号:"+ xhr.status +"错误信息:"+ xhr.statusText); } } } //调用Ajax addEvent(document, 'click', function(){ ajax({ method:'get', url:'demo.php', data:{ 'name':'L&ee', 'age':100 }, success:function(text){ console.log(text); }, async:true }); })
//封装Ajax function ajax(obj){ var xhr = (function(){ if(typeof XMLHttpRequest != 'undefined'){ return new XMLHttpRequest(); }else if(typeof ActiveXObject != 'undefined'){ var version = [ 'MSXML2.XMLHttp.6.0', 'MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp', ]; for(var i=0; i<version.length; i++){ try{ return new ActiveXObject(version[i]); }catch(e){ } } }else{ throw new Error('您的系统或浏览器不支持XHR对象!'); } })(); obj.url = obj.url + '?rand='+ Math.random(); //obj.data = params(obj.data); obj.data = (function(data){ var arr=[]; for(var i in data){ arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i])); } return arr.join('&'); })(obj.data); if(obj.method == 'get')obj.url += obj.url.indexOf('?') == -1 ? '?' +obj.data : '&' + obj.data ; if(obj.async === true){ xhr.onreadystatechange=function(){ if(xhr.readyState == 4){ callback(); } } } xhr.open(obj.method, obj.url, obj.async); if(obj.method === 'post'){ xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send(obj.data); }else{ xhr.send(null); } if(obj.async === false){ callback(); } function callback(){ if(xhr.status == 200){ obj.success(xhr.responseText); }else{ console.log("获取数据错误!错误代号:"+ xhr.status +"错误信息:"+ xhr.statusText); } } }
/* * @Author: ocean * @Date: 2015-06-22 23:21:37 * @Last Modified by: ocean * @Last Modified time: 2015-06-22 23:42:10 */ 'use strict'; // 惰性载入 function createXHR(){ if(typeof XMLHttpRequest != "undefined"){ createXHR = function(){ return new XMLHttpRequest(); } } else if (typeof ActiveXObject != "undefined"){ createXHR = function(){ if(typeof arguments.callee.activeXString != "string"){ var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp"], i, len; for(i = 0, len = versions.length; i < len; i++){ try{ new ActiveXObject(versions[i]); arguments.callee.activeXString = versions[i]; break; } catch (ex) { //skip } } } return new ActiveXObject(arguments.callee.activeXString); } } else { createXHR = function(){ throw new Error("NO XHR object available."); } } return createXHR(); } // 模块模式 var createXHR = (function(){ if(typeof XMLHttpRequest != "undefined"){ return function(){ return new XMLHttpRequest(); } } else if (typeof ActiveXObject != "undefined"){ return function(){ if(typeof arguments.callee.activeXString != "string"){ var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp"], i, len; for(i = 0, len = versions.length; i < len; i++){ try{ new ActiveXObject(versions[i]); arguments.callee.activeXString = versions[i]; break; } catch (ex) { //skip } } } return new ActiveXObject(arguments.callee.activeXString); } } else { return function(){ throw new Error("NO XHR object available."); } } })();