原生javascript实现的ajax方法,如:ajax.post();ajax.get();ajax.json();ajax.upload();
使用详情请访问:https://git.oschina.net/wuquanyao/mini-ajax.js
/*=================================================
* mini-ajax.js
* author: wuquanyao
* email: wqynqa@163.com
* ver: beta
* date: 2015-10
*===================for example===================
* ajax.get('request.php',{a:2015,b:'wqyn'},function(response){
* console.log(response);
* },'json');
*=================================================
* ajax.post('request.php',{c:'this is request!',d:'datamap'},function(response){
* console.log(response);
* },'json');
*=================================================
* ajax.json('request.php',{xcv:'this is request!',vcd:'datamap'},function(response){
* console.log(response);
* });
*=================================================
*/
var ajax = {};
(function(ajax){
ajax.get = function(url,data,func,datatype){
init(url,data,'get',func,datatype);
}
ajax.post = function(url,data,func,datatype){
init(url,data,'post',func,datatype);
}
ajax.json = function(url,data,func){
init(url,data,'get',func,'json');
};
ajax.upload = function(params){
//do something, not realized, follow up!!
}
function init(url,data,requesttype,func,datatype){
if(!url){
alert('request url can not be empty!');
return false;
}
var dlen = count(data);
if(requesttype=='get'){
if(dlen){
var search = kvalue(data);
url = (url.indexof('?')==-1)?(url+'?'+search):(url+search);
}
data = null;
}else if(requesttype=='post'){
if(!dlen)
data = null;
else
data = kvalue(data);
}
var xmlhttp = false,
requesttype = requesttype || 'get';
datatype = datatype || 'json';
func = func || function(param){};
if(window.xmlhttprequest){
xmlhttp = new xmlhttprequest();
}else{
try
{
xmlhttp = new activexobject(msxml2.xmlhttp.5.0);
}catch(e){
try
{
xmlhttp = new activexobject(msxml2.xmlhttp.4.0);
}catch(e){
try
{
xmlhttp = new activexobject(msxml2.xmlhttp);
}catch(e){
try{
xmlhttp = new activexobject(microsoft.xmlhttp);
}catch(e){
}
}
}
}
}
if(!xmlhttp){
alert('your browser does not support ajax!');
return false;
}
if(xmlhttp.overridemimetype){
xmlhttp.overridemimetype('text/html');
}
var accept = {
text: 'text/plain',
html: 'text/html',
xml : 'application/xml,text/xml',
json: 'application/json,text/javascript'
};
//get,post,put,delete
xmlhttp.open(requesttype,url,true);
if(requesttype == 'post'){
xmlhttp.setrequestheader('content-type','application/x-www-form-urlencoded;charset=utf-8');
//xmlhttp.setrequestheader('content-type','multipart/form-data');
}
xmlhttp.setrequestheader('accept', accept[datatype]+';q=0.9,image/webp,*/*;q=0.8');
xmlhttp.setrequestheader('accept-language', 'zh-cn,zh;q=0.8');
xmlhttp.setrequestheader('cache-control', 'max-age=21600');
xmlhttp.onreadystatechange = function(){
if((xmlhttp.readystate == 4) && xmlhttp.status == 200){
var d = xmlhttp.responsetext;
if(datatype == 'json'){
d = json.parse(d);
}
func(d);
};
}
xmlhttp.send(data);
}
function kvalue(params,sep)
{
var kv = '';
sep = sep || '&';
for(key in params){
kv+=key+'='+params[key]+sep;
}
return kv.substring(0,kv.length-1);
}
function count(data)
{
var index = 0;
for(i in data){
index++;
}
return index;
}
})(ajax);
qq截图20151027101029.png ( 115.41 kb 下载:24 次 )
ad:真正免费,域名+虚机+企业邮箱=0元