81,092
社区成员
发帖
与我相关
我的任务
分享
/**
* 操作ajax的对象
*/
var ajax = {
/**
* @see 创建ajax核心对象,兼容浏览器有:IE6,7,8,9,10,谷歌,火狐,欧朋,360极速,360安全,苹果,搜狗,遨游,猎豹,腾讯
* @return XMLHttpRequest
*/
getCore : function() {
var xmlHttp = null;
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
if (xmlHttp.overrideMimeType) {
xmlHttp.overrideMimeType("text/xml");
}
} else {
if (window.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
}
if (xmlHttp == null) {
dv.alert("\u8bf7\u4f7f\u7528IE\u6d4f\u89c8\u5668!");
}
return xmlHttp;
},
remoteBack : null,// 跨域ajax的回调事件
core : null,// ajax的核心对象
/**
* @see 处理ajax参数
* @param param 参数, 可以是js对象或字符串: id=1&name=lisi
* @return String
*/
getParam : function(param) {
var randomStr = "ajaxParamRandom=" + Math.random();
if (param == null) {
return randomStr;
}
var info = "";
if (typeof(param) == "object") {
for (var key in param) {
info += key + "=" + param[key] + "&";
}
info = (info.length > 0 ? info.substring(0, info.length - 1) : info);
} else {
info = param;
}
return info + "&" + randomStr;
},
/**
* @see ajax的回调函数
* @param callback 用户自定义回调函数
* @param url 请求的url
*/
doCallback : function(callback, url) {
if (ajax.core.readyState == 4) {
if (ajax.core.status == 200) {
ajax.doBack(callback, new String(ajax.core.responseText));
} else if (ajax.core.status == 0 || ajax.core.status == 12029) {
//window.location.href = path + "/login.htm";
dv.alert("请求超时, 请稍候重试");
} else if (ajax.core.status == 404) {
dv.showGress("0", "1");
dv.alert("找不到资源: " + url);
}
}
},
/**
* @see 处理ajax的回调函数
* @param callback 用户自定义回调函数
* @param result 请求的结果
*/
doBack : function(callback, result) {
if (callback == null) {
return;
}
if (null != result && result != "") {
if (result == "null") {
callback(null);
} else {
var backObject = null;
if (result == "true" || result == "false") {
backObject = eval(result);
} else if (!isNaN(result)) {
backObject = parseFloat(result);
} else if ((result.substring(0, 1) == "[" && result.substring(result.length - 1, result.length) == "]") ||
(result.substring(0, 1) == "{" && result.substring(result.length - 1, result.length) == "}")) {
backObject = eval("(" + result + ")");
} else {
backObject = result;
}
callback(backObject);
}
} else {
callback(result);
}
},
/**
* @see ajax的post请求
* @param url 请求的url
* @param param 参数列表,可以是字符串或js对象或null
* @param callback 用户自定义回调函数
*/
post : function(url, param, callback) {
ajax.doPost(url, param, true, callback);
},
/**
* @see ajax的post请求
* @param url 请求的url
* @param param 参数列表,可以是字符串或js对象或null
* @param isAsynch 是否异步
* @param callback 用户自定义回调函数
*/
doPost : function(url, param, isAsynch, callback) {
ajax.core = ajax.getCore();
if (ajax.core != null) {
ajax.core.onreadystatechange = function() {
ajax.doCallback(callback, url);
};
ajax.core.open("POST", url, isAsynch == null ? false : isAsynch);
ajax.core.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.core.send(ajax.getParam(param));
}
},
/**
* @see ajax的get请求
* @param url 请求的url
* @param callback 用户自定义回调函数
*/
get : function(url, callback) {
ajax.doGet(url, true, callback);
},
/**
* @see ajax的get请求
* @param url 请求的url
* @param isAsynch 是否异步
* @param callback 用户自定义回调函数
*/
doGet : function(url, isAsynch, callback) {
ajax.core = ajax.getCore();
if (ajax.core != null) {
url += (url.indexOf("?") != -1 ? "&" : "?") + "ajaxParamRandom=" + Math.random();
ajax.core.onreadystatechange = function() {
ajax.doCallback(callback, url);
};
ajax.core.open("GET", url, isAsynch == null ? false : isAsynch);
ajax.core.send(null);
}
},
/**
* @see 跨域ajax(只支持get请求, 并且主域名必须一致)
* @param url 请求的url
* @param callback 用户自定义回调函数
*/
remote : function(url, callback) {
ajax.remoteBack = callback;
url += (url.indexOf("?") != -1 ? "&" : "?") + "ajaxParamRandom=" + Math.random();
if (com.getO("frmRemoteAjax") != null) {
document.body.removeChild(com.getO("frmRemoteAjax"));
}
var iframe = document.createElement("iframe");
iframe.setAttribute("id", "frmRemoteAjax");
iframe.style["display"] = "none";
document.body.appendChild(iframe);
com.getO("frmRemoteAjax").src = url;
},
/**
* 跨域ajax的请求的回调事件
* @param result 请求的结果
*/
remoteCallback : function(result) {
document.body.removeChild(com.getO("frmRemoteAjax"));
ajax.doBack(ajax.remoteBack, result);
}
};
之后调用:
ajax.post("你的url", {param : "你的参数"}, function(json) {
alert(json.message);
});