⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xoad.js

📁 Ajax最流行书籍
💻 JS
📖 第 1 页 / 共 2 页
字号:
var XOAD_ERROR_USER = 0x400;var XOAD_ERROR_TIMEOUT = 0x401;var xoad = {};xoad.errorHandler = null;xoad.callbacks = {};xoad.callbacks.table = {};xoad.callbacks.count = 0;xoad.events = {};xoad.events.table = [];xoad.events.postTable = [];xoad.events.timeout = 5000;xoad.events.startInterval = 250;xoad.events.refreshInterval = 2000;xoad.events.status = 0;xoad.observers = [];xoad.asyncCall = function() {};xoad.callSuspender = function(){	return {		suspend		:	function() {			this.suspended = true;		},		suspended	:	false	}};xoad.getError = function(errorCode, errorMessage){	return {		code	:	errorCode,		message	:	errorMessage	}};xoad.getXmlHttp = function(){	var xmlHttp = null;	try {		xmlHttp = new XMLHttpRequest();	} catch (e) {		var progIds = ['MSXML2.XMLHTTP', 'Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0'];		var success = false;		for (var iterator = 0; (iterator < progIds.length) && ( ! success); iterator ++) {			try {				xmlHttp = new ActiveXObject(progIds[iterator]);				success = true;			} catch (e) {}		}		if ( ! success ) {			return null;		}	}	return xmlHttp;};xoad.clone = function(target, source){	var wipeKeys = [];	var key = null;	for (key in target.__meta) {		if (typeof(source[key]) == 'undefined') {			wipeKeys[wipeKeys.length] = key;		}	}	if (wipeKeys.length > 0) {		for (var iterator = 0; iterator < wipeKeys.length; iterator ++) {			target[wipeKeys[iterator]] = null;		}	}	for (key in source.__meta) {		if (source[key] == null) {			target[key] = null;		} else {			target[key] = source[key];		}	}	target.__meta = source.__meta;	target.__size = source.__size;	target.__timeout = source.__timeout;};xoad.serialize = function(data){	if (data == null) {		return 'N;';	}	var type = typeof(data);	var code = '';	var iterator = 0;	var length = null;	var asciiCode = null;	var key = null;	if (type == 'boolean') {		code += 'b:' + (data ? 1 : 0) + ';';	} else if (type == 'number') {		if (Math.round(data) == data) {			code += 'i:' + data + ';';		} else {			code += 'd:' + data + ';';		}	} else if (type == 'string') {		length = data.length;		for (iterator = 0; iterator < data.length; iterator ++) {			asciiCode = data.charCodeAt(iterator);			if ((asciiCode >= 0x00000080) && (asciiCode <= 0x000007FF)) {				length += 1;			} else if ((asciiCode >= 0x00000800) && (asciiCode <= 0x0000FFFF)) {				length += 2;			} else if ((asciiCode >= 0x00010000) && (asciiCode <= 0x001FFFFF)) {				length += 3;			} else if ((asciiCode >= 0x00200000) && (asciiCode <= 0x03FFFFFF)) {				length += 4;			} else if ((asciiCode >= 0x04000000) && (asciiCode <= 0x7FFFFFFF)) {				length += 5;			}		}		code += 's:' + length + ':"' + data + '";';	} else if (type == 'object') {		if (typeof(data.__class) == 'undefined') {			length = 0;			if (			(typeof(data.length) == 'number') &&			(data.length > 0) &&			(typeof(data[0]) != 'undefined')) {				for (iterator = 0; iterator < data.length; iterator ++) {					if (typeof(data[iterator]) != 'function') {						code += xoad.serialize(iterator);						code += xoad.serialize(data[iterator]);						length ++;					}				}			} else {				for (key in data) {					if (typeof(data[key]) != 'function') {						if (/^[0-9]+$/.test(key)) {							code += xoad.serialize(parseInt(key));						} else {							code += xoad.serialize(key);						}						code += xoad.serialize(data[key]);						length ++;					}				}			}			code = 'a:' + length + ':{' + code + '}';		} else {			code += 'O:' + data.__class.length + ':"' + data.__class + '":' + data.__size + ':{';			if (data.__meta != null) {				for (key in data.__meta) {					if (typeof(data[key]) != 'function') {						code += xoad.serialize(key);						code += xoad.serialize(data[key]);					}				}			}			code += '}';		}	} else {		code = 'N;'	}	return code;};xoad.setErrorHandler = function(handler){	if (	(handler != null) &&	(typeof(handler) == 'function')) {		xoad.errorHandler = handler;		return true;	}	return false;};xoad.restoreErrorHandler = function(){	xoad.errorHandler = null;	return true;};xoad.throwException = function(error, throwArguments){	if (typeof(throwArguments) != 'undefined') {		var sender = throwArguments[0];		var method = throwArguments[1];		method = 'on' + method.charAt(0).toUpperCase() + method.substr(1) + 'Error';		if (xoad.invokeMethod(sender, method, [error])) {			return false;		}	}	if (	(xoad.errorHandler != null) &&	(typeof(xoad.errorHandler) == 'function')) {		xoad.errorHandler(error);		return false;	}	throw error;};xoad.invokeMethod = function(obj, method, invokeArguments){	if (	(obj == null) ||	(typeof(obj) != 'object')) {		return false;	}	var type = eval('typeof(obj.' + method + ')');	if (type == 'function') {		var invokeCode = 'obj.' + method + '(';		if (typeof(invokeArguments) != 'undefined') {			for (var iterator = 0; iterator < invokeArguments.length; iterator ++) {				invokeCode += 'invokeArguments[' + iterator + ']';				if (iterator < invokeArguments.length - 1) {					invokeCode += ', ';				}			}		}		invokeCode += ')';		return eval(invokeCode);	}	return false;};xoad.call = function(obj, method, callArguments){	if (	(obj == null) ||	(typeof(obj) != 'object') ||	(typeof(obj.__class) != 'string')) {		return false;	}	var methodCallback = null;	var methodArgs = [];	for (var iterator = 0; iterator < callArguments.length; iterator ++) {		if (		(typeof(callArguments[iterator]) == 'function') &&		(iterator == callArguments.length - 1)) {			methodCallback = callArguments[iterator];			continue;		}		methodArgs[methodArgs.length] = callArguments[iterator];	}	var xmlHttp = xoad.getXmlHttp();	var requestBody = {		source		:	obj,		className	:	obj.__class,		method		:	method,		arguments	:	methodArgs	};	xoad.notifyObservers('call', requestBody);	requestBody.source = xoad.serialize(requestBody.source);	requestBody.arguments = xoad.serialize(requestBody.arguments);	requestBody = xoad.serialize(requestBody);	var url = obj.__url;	if (url.indexOf('?') < 0) {		url += '?';	} else {		url += '&';	}	url += 'xoadCall=true';	if (methodCallback != null) {		xmlHttp.open('POST', url, true);	} else {		xmlHttp.open('POST', url, false);	}	var callId = null;	var callTimeout = obj.getTimeout();	if (callTimeout != null) {		callId = xoad.callbacks.count;	}	xoad.callbacks.count ++;	var callResult = true;	var requestCompleted = function() {		if (typeof(callResult) == 'object') {			if (callResult.suspended) {				return false;			}		}		if (callId != null) {			if (eval('xoad.callbacks.table.call' + callId + '.timeout')) {				return false;			}			eval('window.clearTimeout(xoad.callbacks.table.call' + callId + '.id)');			eval('xoad.callbacks.table.call' + callId + ' = null');		}		if (xmlHttp.status != 200) {			return xoad.throwException(xoad.getError(xmlHttp.status, xmlHttp.statusText), [obj, method]);		} else {			if (xmlHttp.responseText == null) {				return xoad.throwException(xoad.getError(xmlHttp.status, 'Empty response.'), [obj, method]);			}			if (xmlHttp.responseText.length < 1) {				return xoad.throwException(xoad.getError(xmlHttp.status, 'Empty response.'), [obj, method]);			}			try {				eval('var xoadResponse = ' + xmlHttp.responseText + ';');			} catch(e) {				return xoad.throwException(xoad.getError(xmlHttp.status, 'Invalid response.'), [obj, method]);			}			if (typeof(xoadResponse.exception) != 'undefined') {				return xoad.throwException(xoad.getError(XOAD_ERROR_USER, xoadResponse.exception), [obj, method]);			}			if (xoad.notifyObservers('callCompleted', xoadResponse)) {				obj.__clone(xoadResponse.returnObject);				if (typeof(xoadResponse.output) != 'undefined') {					obj.__output = xoadResponse.output;				} else {					obj.__output = null;				}				return {					returnValue	:	xoadResponse.returnValue				};			}		}		return false;	};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -