原生Ajax至mini-ajax.js
2015-10-27 00:00
543 查看
摘要: mini-ajax.js是一款非常轻巧的ajaax插件,它不依赖其他第三方js插件,使用起来非常方便
使用详情请访问: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);
使用详情请访问: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);
相关文章推荐
- 解决Ajax悬停效果,无法遮蔽FLASH的问题
- 再谈Jquery Ajax方法传递到action(补充)
- Dom在ajax技术中的作用说明
- 使用Ajax实时检测"用户名、邮箱等"是否已经存在
- 探讨Ajax中同步与异步之间的区别
- 原生AJAX写法实例分析
- 探秘ajax跨域请求
- JQuery ajax返回JSON时的处理方式 (三种方式)
- Ajax中浏览器和服务器交互详解
- ajax实现点击不同的链接让返回的内容显示在特定div里
- ajax 动态传递jsp等页面使用id辨识传递对象
- ajax与传统web开发的异同点
- AJAX简单应用实例-弹出层
- AJAX初级教程之初识AJAX
- Ajax无刷新分页的性能优化方法
- jquery对ajax的支持介绍
- jQuery基于ajax实现星星评论代码
- Ajax 说的比较清楚的一篇文章
- 强烈推荐 - Ajax 技术资源中心
- Ajax PHP简单入门教程代码