📄 ajax.js
字号:
function MagicAjax()
{
this.errorMsg = new Array("ajax 调用发生错误","缺少类名或方法名","参数错误");
this.async = true;//是否异步
this.url = null;//请求的URL
this.type = "get";// get or post
this.param = null;//参数
this.callBack = null;//回调函数
this.data = null;//传递给回调函数的参数,没有则为NULL
this.Timer = null;
this.complete = false;
this.currentUrl = "";//当前页面的URL,登陆后跳转
var _xmlHttp ;
var msXmlHttp = new Array(
'Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0',
'Msxml2.XMLHTTP',
'Microsoft.XMLHTTP');
for(var i = 0; i < msXmlHttp.length; i++)
{
try{
_xmlHttp = new ActiveXObject(msXmlHttp[i]);
}
catch (e) {
_xmlHttp = null;
}
}
if(!_xmlHttp && typeof XMLHttpRequest != "undefined")
_xmlHttp = new XMLHttpRequest();
this.xmlHttp = _xmlHttp;
this._callback = function (_this,request, callback, data) {
if(request.readyState == 4) {
_this.complete = true;
window.clearInterval(_this.Timer);
if(request.status != 200) alert(_this.errorMsg[0]+ "status:" + request.status);
else {
var msg = request.responseText;
switch(msg) {
case "ajaxError1":
break;
case "ajaxError2":
break;
case "ajaxError3":
break;
case "unlogin":
window.location.href = "../user/Sign-in.aspx" + ( _this.currentUrl == "" ? "" : "?url-redirect-to=" + _this.currentUrl );
break;
default :
callback(request, data);
break;
}
}
}
}
this.exec = function()
{
var _this = this;
if(_this.url == null)
{
alert("请求地址未指定");
return;
}
if(_this.callBack == null)
{
alert("回调函数未指定");
return;
}
var isGet = _this.type.toLowerCase() == "get";
if(isGet)
{
_this.url += ((_this.url.indexOf("?") > -1) ? "&" : "?") +_this.param +"&" + Math.random();
}
if(_this.async)
_this.xmlHttp.onreadystatechange = function() { _this._callback(_this,_this.xmlHttp,_this.callBack,_this.data); };
if(isGet){
_this.xmlHttp.open("get",_this.url,_this.async);
_this.xmlHttp.send(null);
}
else{
_this.xmlHttp.open("post",_this.url,_this.async);
_this.xmlHttp.setRequestHeader('Content-length', _this.param.length);
_this.xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
_this.xmlHttp.send(_this.param);
}
if(_this.async) {
_this.complete = false;
_this._callback(_this,_this.xmlHttp,_this.callBack,_this.data);
if(!_this.complete){
_this.Timer = window.setInterval(function() {
if(!_this.complete) _this._callback(_this,_this.xmlHttp,_this.callBack,_this.data);
else window.clearInterval(_this.Timer);},1000);
}
}else{
return this.xmlHttp.responseText;
}
}
}
function callAjax(method, callback)
{
var objAjax=new MagicAjax();
var param = "method="+method+"&reserve=1";
var argLenth = arguments.length;
if(argLenth>2)
for(var i = 2; i<argLenth; i++)
param=param+"&"+arguments[i].name+"="+escape(arguments[i].value);
objAjax.currentUrl = escape( window.location.href);
objAjax.url = "ajax.ashx";
objAjax.param = param;
objAjax.callBack = callback;
objAjax.exec();
}
function callAjaxSync(method)
{
var objAjax=new MagicAjax();
var param = "method="+method+"&reserve=1";
var argLenth = arguments.length;
if(argLenth>1)
for(var i = 1; i<argLenth; i++)
param=param+"&"+arguments[i].name+"="+arguments[i].value;
objAjax.currentUrl = escape( window.location.href);
objAjax.url = "ajax.ashx";
objAjax.param = param;
objAjax.callBack = function(){};
objAjax.async=false;
return objAjax.exec();
}
function Updater(ajaxTemplate, output, callBack){ var xmlHttp; var param = "AjaxTemplate=" + ajaxTemplate; var msXmlHttp = new Array(
'Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0',
'Msxml2.XMLHTTP',
'Microsoft.XMLHTTP');
var argLenth = arguments.length;
var divOutput = document.getElementById(output);
if(argLenth > 3)
{
for(var i = 3; i < argLenth; i++)
{
param = param + "&" + arguments[i].name + "=" + arguments[i].value;
}
}
for(var i = 0; i < msXmlHttp.length; i++)
{
try
{
xmlHttp = new ActiveXObject(msXmlHttp[i]);
if(xmlHttp!=null) break;
}
catch (e)
{
xmlHttp = null;
}
}
if(!xmlHttp && typeof XMLHttpRequest != "undefined")
{
xmlHttp = new XMLHttpRequest();
}
if(callBack == null)
{
xmlHttp.onreadystatechange = function(){ UpdaterCallback(xmlHttp, divOutput);};
}
else
{
xmlHttp.onreadystatechange = callBack;
}
xmlHttp.open("post","/AjaxHelper/AjaxHelper.aspx",true);
xmlHttp.setRequestHeader('Content-length', param.length);
xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlHttp.setRequestHeader('Connection', 'close');
xmlHttp.send(param); }function UpdaterCallback(http,output){ if(http.readyState == 4)
{
if(http.status != 200)
{
output.innerHTML = "Error:" + http.status + http.responseText;
}
else if(output!= null)
{
var s = http.responseText;
//set_innerHTML(output, s, null);
output.innerHTML = s;
//execInnerScript(s);
} }}function UpdaterNonText(ajaxTemplate){ var xmlHttp; var param = "AjaxTemplate=" + ajaxTemplate; var msXmlHttp = new Array(
'Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0',
'Msxml2.XMLHTTP',
'Microsoft.XMLHTTP');
var argLenth = arguments.length;
if(argLenth > 1)
{
for(var i = 1; i < argLenth; i++)
{
param = param + "&" + arguments[i].name + "=" + arguments[i].value;
}
}
for(var i = 0; i < msXmlHttp.length; i++)
{
try
{
xmlHttp = new ActiveXObject(msXmlHttp[i]);
if(xmlHttp!=null) break;
}
catch (e)
{
xmlHttp = null;
}
}
if(!xmlHttp && typeof XMLHttpRequest != "undefined")
{
xmlHttp = new XMLHttpRequest();
}
xmlHttp.onreadystatechange = function(){};
xmlHttp.open("post","/AjaxHelper/AjaxHelper.aspx",true);
xmlHttp.setRequestHeader('Content-length', param.length);
xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlHttp.setRequestHeader('Connection', 'close');
xmlHttp.send(param); }//执行innerHTML里面的javascriptfunction execInnerScript(innerhtml)
{
var temp=innerhtml.replace(/\n|\r/g,"");
var regex=/<script.+?<\/script>/gi;
var arr=temp.match(regex);
if(arr)
{
for(var iiiiiiiiii_iii=0;iiiiiiiiii_iii<arr.length;iiiiiiiiii_iii++)
{
var temp1=arr[iiiiiiiiii_iii];
var reg=new RegExp("^<script(.+?)>(.+)<\/script>$","gi");
reg.test(temp1);
eval(RegExp.$2);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -