<script>
var ajax = (function() {
var parseParam = function(origin , target) {
origin = origin || {};
target = target || {};
var obj = {};
for(var key in origin) {
if(target[key]) {
obj[key] = target[key];
} else {
obj[key] = origin[key];
}
}
return obj;
};
var getXhr = function() {
var _xhr = false;
try {
_xhr = new XMLHttpRequest();
} catch(ms) {
try {
_xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(otherms) {
try {
_xhr = new ActiveXObject("MICROSOFT.XMLHTTP");
} catch(failed) {
}
}
}
return _xhr;
};
var jsonToQuery = function(jsonObj) {
var result = [];
for(var key in jsonObj) {
result.push(key + "=" + jsonObj[key]);
}
return result.join('&');
};
/*
* {
* url :
* args :
* method :
* complete :
* }
*/
var funcEmpty = function() {};
return function(opts) {
opts = parseParam({
type : "json",
url : "",
args : {},
method : "get",
complete : funcEmpty
} , opts);
console.log(opts.url);
var xhr = getXhr();
var url = opts.url;
var query = jsonToQuery(opts.args);
var cback = function() {
if(xhr.readyState === 4) {
if(opts.type === 'json') {
var obj = eval('(' + xhr.responseText + ')');
opts.complete(obj);
} else {
var result = xhr.responseXML;
opts.complete(result);
}
}
};
xhr.onreadystatechange = cback;
var setHeader = function() {
try {
xhr.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded');
xhr.setRequestHeader('X-Requested-With' , 'XMLHttpRequest');
} catch(e){
}
};
if(opts.method === 'get') {
url = url + (url.indexOf('?') == -1 ? '?' : "&") + query;
xhr.open("get" , url , true);
setHeader();
xhr.send(null);
} else {
xhr.open("post" , url , true);
setHeader();
xhr.send(query);
}
};
})();
ajax({
url : "/php/test/ajax.php",
method : "post",
args : {
a : 1,
b : 2,
c : 3
},
complete : function(json) {
console.log(json);
}
});
</script>