一个简单的ajax请求,一个简单的Ajax请求对象

把下面代码直接引入就可以使用下面有使用的方法

在一些小的应用中会经常用到,支持get,post,jsonp请求方法

(function(a) {

//======================一个简单的ajax对象==============================

var _dev = true;

var _debug = function(msg) {

_dev && console && console.log(msg);

};

/**

* 扩展配置

* @param  {[type]} dest 目标对象,被覆盖

* @param  {[type]} src  源对象

* @return {[type]}      合成成功对象

*/

var _extend = function(dest, src) {

for (var i in src) {

dest[i] = src[i];

}

return dest;

};

var b = function(o) {

this.conf = o;

this.result = null;

this.xmlHttp = null;

};

b.prototype = {

//创建xmlHttp对象

createXMLHttpRequest: function() {

if (a.ActiveXObject) {

return new ActiveXObject("Microsoft.XMLHTTP");

} else if (a.XMLHttpRequest) {

return new XMLHttpRequest();

}

},

/*发送请求

@param re_mod请求的方法

@param re_file请求的文件

@param re_param请求的参数,用,号分隔开如:(“1,2,3,”)

@param callfun回调函数  这里最好直接用一个匿名函数来代替如:function(){}

*/

sendAjax: function() {

var _t = this;

_t.xmlHttp = this.createXMLHttpRequest();

var _c = _t.conf;

var _xhr = _t.xmlHttp;

_xhr.onreadystatechange = function() {

if (_xhr.readyState == 4) {

_t.result = _xhr.responseText

if (_xhr.status == 200) {

_debug(_xhr);

var _retype = _xhr.responseType;

if (_t.result.indexOf('{') === 0) {

try {

_t.result = eval('(' + _t.result + ')');

} catch (e) {

_t.result = e;

}

}

_c.success(_t.result);

} else {

_c.error(_xhr);

}

}

};

var par = '';

var url = _c.url;

for (var i in _c.data) {

var _data = escape(_c.data[i]);

par += par ? ("&" + i + "=" + _data) : (i + "=" + _data);

}

_c.type = _c.type.toUpperCase();

if (_c.type == 'POST') {

_xhr.open(_c.type, url, true);

_xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

} else {

par && ((url.indexOf('?') !== -1) ? (url += "&" + par) : (url += "?" + par));

_xhr.open(_c.type, url, true);

}

_xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

_xhr.send(par);

}

};

/**

* 生成指定范围内的随机数

* @param  {[type]} start 开始

* @param  {[type]} end   结束

* @return {[type]}       int

*/

var suijishu = function(start, end) {

return Math.floor(Math.random() * (end - start + 1) + start);

};

var c = function() {

var _opt = {

url: '',

type: 'get',

data: {},

dataType: 'text',

success: function() {},

error: function() {}

};

var args = arguments;

//第二个参数为字符串时自动转为jsonp请求

if ('string' === typeof args[1]) {

_opt.dataType = 'jsonp';

_opt.success = args[2];

_opt.url = args[0];

}

if (_opt.dataType && _opt.dataType == 'jsonp') {

var s = document.createElement('script');

var callbackname = 'jsonpcallback' + (new Date()).getTime() + '' + suijishu(1000, 9999);

a[callbackname] = function(data) {

try {

data = eval('(' + data + ')');

} catch (e) {}

_opt.success(data);

a[callbackname] = undefined;

};

if (_opt.url.indexOf('?') != -1) {

s.src = _opt.url + '&datatype=jsonp&callback=' + callbackname;

} else {

s.src = _opt.url + '?datatype=jsonp&callback=' + callbackname;

}

document.getElementsByTagName('head').item(0).appendChild(s);

s.parentNode.removeChild(s);

} else {

if ('string' === typeof args[0]) {

_opt.url = args[0];

if ('object' === typeof args[1]) {

//post数据转为post

_opt.type = 'POST';

_opt.data = args[1];

args[2] && (_opt.success = args[2]);

args[3] && (_opt.error = args[3]);

} else {

//默认get

args[1] && (_opt.success = args[1]);

args[2] && (_opt.error = args[2]);

}

//这里是url

} else if ('object' === typeof args[0]) {

_extend(_opt, args[0]);

}

// d.extend(_opt, _opt);

var d = new b(_opt);

d.sendAjax();

return d;

}

};

a.simpleAjax = c;

})(window);

使用方法simpleAjax({

type: 'POST',

dataType: 'text', //默认为text

url: "xml.html?name=asdf",

data: {

a: 'asdf&&1',

b: 2

},

success: function(data) {

console.log(data);

},

error: function(xhr) {

console.log(xhr);

}

});

//简单使用方法

//get

simpleAjax('xml.html?name=asdf', function(data) {

//请求成功

console.log(data);

}, function(xhr) {

// 请求失败

console.log(xhr);

});

//post

simpleAjax('xml.html?name=asdf', {}, function(data) {

//请求成功

console.log(data);

}, function(xhr) {

//请求失败

console.log(xhr);

});

//jsonp

simpleAjax('./data.php', 'jsonp', function(data) {

//请求成功

console.log(data);

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值