ajax.request("ajax.html",{v:Math.random(),num:1},function(data){ //do something },'get');
var ajax = { //Xmlhttprequest类 Xmlhttprequest: function () { this.xhr = false; }, //外部调用接口 request: function (url, data, callback, type) { //每次都创建一个Xmlhttprequest的对象,使ajax调用互不影响 var xhr = new this.Xmlhttprequest(); xhr.request(url, data, callback, type); } } //将{num:1,t:'a'}这种json数据格式转为num=1&t=a这种字符串形式 var json2str = function (data) { var _data = []; for (var name in data) { _data.push(name + "=" + data[name]); } return _data.join('&'); } //扩展Xmlhttprequest类的方法 ajax.Xmlhttprequest.prototype = { //创建XMLHttpRequest createXmlHttpRequest: function () { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else { var a = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0"]; for (var i = 0, l = a.length; i < l; i++) { try { return new ActiveXObject(a[i]); } catch (e) { } ; } } }, //回调函数 fnCallback: function (callback) { if (this.xhr.readyState === 4 && this.xhr.status === 200) { callback ? callback(this.xhr.responseText) : void(0); } }, //ajax请求 request: function (url, data, callback, type) { var that = this; var ispost = type === 'post' ? true : false; !ispost && (url += (url.indexOf('?') + 1 ? '&' : '?') + json2str(data)); this.xhr = this.createXmlHttpRequest(); this.xhr.open(type, url, true); ispost ? this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") : ''; this.xhr.onreadystatechange = function () { that.fnCallback(callback); }; this.xhr.send(ispost ? json2str(data) : null); } }