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.");
}
}
})();