自定义ajax调用功能

由于公司未采用任何一套js框架,使用ajax方式调用很是郁闷,就自己搞了个来调用:

var xmlHttpRequest;
// 创建XMLHttpRequest对象,在各个浏览器上,该对象的名称及创建方法不一样
function createXMLHttpRequest() {
var xmlHttp;
if (window.XMLHttpRequest) {
// Firefox Exproler
xmlHttp = new XMLHttpRequest();
/*设置MiME类别
** 其作用是:针对某些特定版本的mozillar浏览器的BUG进行修正
** 具体来说:如果来自服务器的响应没有 XML mime-type 头部,则一些版本的 Mozilla 浏览器不能正常运行。
** 对于这种情况,httpRequest.overrideMimeType('text/xml'); 语句将覆盖发送给服务器的头部,强制 text/xml 作为 mime-type。
*/
if (xmlHttp.overrideMimeType){
xmlHttp.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
// Internet Exproler
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
};
if( typeof window.ZHY == 'undefined') {
ZHY = {};
}
ZJH = {
url:"",
//固定全大写,固定将参数转成大写
type:"GET",
async:true,
data:"",
//暂时未使用,返回值取纯文本
dataType:"text",
returnData:null,
init:function(obj){
if(obj.url == null || typeof obj.url == 'undefined')return false;
this.url = obj.url;
if(!(obj.type == null || typeof obj.type == 'undefined')){
this.type = obj.type.toUpperCase();
}
if(!(obj.async == null || typeof obj.async == 'undefined')){
this.async = obj.async;
}
this.data="";
if(!(obj.data==null || typeof obj.data=='undefined')){
//将json格式数据转换为ajax可以传递参数的格式
for(var key in obj.data){
var param = obj.data[key];
//如果参数是数组,则需要进一步解析
if(Object.prototype.toString.call(param)=="[object Array]"){
for(var value in param){
this.data += "&"+key+"="+value
}
}else this.data += "&"+key+"="+param;
}
if(this.data.length>1)this.data = this.data.substr(1);
}
if(!(obj.success == null || typeof obj.success == 'undefined')){
this.success = obj.success;
}
if(!(obj.error == null || typeof obj.error == 'undefined')){
this.error = obj.error;
}
if(this.type=="GET"){
if(this.data!=""){
this.url += (this.url.indexOf("?")==-1?"?":"&") + this.data;
}
//if(this.url.indexOf("?")==-1)this.url += "?" + this.data;
//else this.url += "&" + this.data;
}

return true;
},
callback : function() {
if(xmlHttpRequest.readyState == 4) {
if(xmlHttpRequest.status == 200) {
var success = ZHY.success;
success(xmlHttpRequest.responseText,xmlHttpRequest.status)
}else{
var error = ZHY.error;
error(xmlHttpRequest,xmlHttpRequest.status)
}
}
},
success : function(data,textStatus){
},
error : function(textStatus, errorThrown){
},
// 发送Ajax请求
/*
**obj对象属性说明如下:
**async:默认true异步传输处理;false为同步处理,将锁住页面,等请求完成后才能继续操作
**url :请求地址,必须指定
**data:请求参数:json格式
**type:发送请求方式:Post/Get,默认Get
**dataType:预期服务器返回的数据类型。默认"text",可选值如下:
** "xml": 返回 XML 文档,可用 jQuery 处理。
** "html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
** "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
** "json": 返回 JSON 数据 。
** "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
** "text": 返回纯文本字符串
**success:请求成功后的回调函数
**error:请求失败时调用此函数
*/
ajax : function(obj) {
if(xmlHttpRequest == null || typeof xmlHttpRequest == 'undefined') {
xmlHttpRequest = createXMLHttpRequest();
}
this.init(obj);
//var url = "/"+Sys_PATH + "/" +Sys_CURDB2+"/agGetTeamInfobyTeam?openagent&key=系统分析与质控组&rnd="+Math.random();
xmlHttpRequest.open(this.type, this.url, this.async);
xmlHttpRequest.onreadystatechange = this.callback;
if(this.type=="GET"){
xmlHttpRequest.send(null);
}else{
//定义传输的文件HTTP头信息
xmlHttpRequest.setRequestHeader("content-length",this.data.length);
xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//发送POST数据
xmlHttpRequest.send(this.data);
}
}
};

调用方式如下:

ZJH.ajax({
url:url,
data:{"key":key,"curPage":curPage,"pageSize":pageSize,"rnd":Math.random()},
type:"Get",
success:function(data){
}
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值