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

📄 najax.js

📁 ajax修炼之道源代码。很难下到的。现在奉献给大家。
💻 JS
📖 第 1 页 / 共 2 页
字号:
var NAJAX_ERROR_USER = 0x400;var NAJAX_ERROR_TIMEOUT = 0x401;var najax = {};najax.errorHandler = null;najax.callbacks = {};najax.callbacks.table = {};najax.callbacks.count = 0;najax.events = {};najax.events.table = [];najax.events.postTable = [];najax.events.timeout = 5000;najax.events.startInterval = 250;najax.events.refreshInterval = 2000;najax.events.status = 0;najax.observers = [];najax.asyncCall = function() {};najax.callSuspender = function(){	return {		suspend		:	function() {			this.suspended = true;		},		suspended	:	false	}};najax.getError = function(errorCode, errorMessage){	return {		code	:	errorCode,		message	:	errorMessage	}};najax.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;};najax.clone = function(target, source){	var wipeKeys = [];	for (var key in target.__meta) {		if (typeof(source[key]) == 'undefined') {			wipeKeys.push(key);		}	}	if (wipeKeys.length > 0) {		for (var iterator = 0; iterator < wipeKeys.length; iterator ++) {			target[wipeKeys[iterator]] = null;		}	}	for (var 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;};najax.serialize = function(data){	if (data == null) {		return 'N;';	}	var type = typeof(data);	var code = '';	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') {		var length = data.length;		for (var iterator = 0; iterator < data.length; iterator ++) {			var 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') {			var length = 0;			if (			(typeof(data.length) == 'number') &&			(data.length > 0) &&			(typeof(data[0]) != 'undefined')) {				for (var iterator = 0; iterator < data.length; iterator ++) {					code += najax.serialize(iterator);					code += najax.serialize(data[iterator]);				}				length = data.length;			} else {				for (var key in data) {					if (/^[0-9]+$/.test(key)) {						code += najax.serialize(parseInt(key));					} else {						code += najax.serialize(key);					}					code += najax.serialize(data[key]);					length ++;				}			}			code = 'a:' + length + ':{' + code + '}';		} else {			code += 'O:' + data.__class.length + ':"' + data.__class + '":' + data.__size + ':{';			if (data.__meta != null) {				for (var key in data.__meta) {					code += najax.serialize(key);					code += najax.serialize(data[key]);				}			}			code += '}';		}	} else {		code = 'N;'	}	return code;};najax.setErrorHandler = function(handler){	if (	(handler != null) &&	(typeof(handler) == 'function')) {		najax.errorHandler = handler;		return true;	}	return false;};najax.restoreErrorHandler = function(){	najax.errorHandler = null;	return true;};najax.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 (najax.invokeMethod(sender, method, [error])) {			return false;		}	}	if (	(najax.errorHandler != null) &&	(typeof(najax.errorHandler) == 'function')) {		najax.errorHandler(error);		return false;	}	throw error;};najax.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;};najax.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 ++) {		methodArgs.push(callArguments[iterator]);	}	if (	(methodArgs.length > 0) &&	(typeof(methodArgs[methodArgs.length - 1]) == 'function')) {		methodCallback = methodArgs[methodArgs.length - 1];		methodArgs.pop();	}	var xmlHttp = najax.getXmlHttp();	var requestBody = {		source		:	obj,		className	:	obj.__class,		method		:	method,		arguments	:	methodArgs	};	najax.notifyObservers('call', requestBody);	requestBody.source = najax.serialize(requestBody.source);	requestBody.arguments = najax.serialize(requestBody.arguments);	requestBody = najax.serialize(requestBody);	var url = obj.__url;	if (url.indexOf('?') < 0) {		url += '?';	} else {		url += '&';	}	url += 'najaxCall=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 = najax.callbacks.count;	}	najax.callbacks.count ++;	var callResult = true;	var requestCompleted = function() {		if (typeof(callResult) == 'object') {			if (callResult.suspended) {				return false;			}		}		if (callId != null) {			if (eval('najax.callbacks.table.call' + callId + '.timeout')) {				return false;			}			eval('window.clearTimeout(najax.callbacks.table.call' + callId + '.id)');			eval('najax.callbacks.table.call' + callId + ' = null');		}		if (xmlHttp.status != 200) {			return najax.throwException(najax.getError(xmlHttp.status, xmlHttp.statusText), [obj, method]);		} else {			if (xmlHttp.responseText == null) {				return najax.throwException(najax.getError(xmlHttp.status, 'Empty response.'), [obj, method]);			}			if (xmlHttp.responseText.length < 1) {				return najax.throwException(najax.getError(xmlHttp.status, 'Empty response.'), [obj, method]);			}			try {				eval('var najaxResponse = ' + xmlHttp.responseText + ';');			} catch(e) {				return najax.throwException(najax.getError(xmlHttp.status, 'Invalid response.'), [obj, method]);			}			if (typeof(najaxResponse.exception) != 'undefined') {				return najax.throwException(najax.getError(NAJAX_ERROR_USER, najaxResponse.exception), [obj, method]);			}			if (najax.notifyObservers('callCompleted', najaxResponse)) {				obj.__clone(najaxResponse.returnObject);				if (typeof(najaxResponse.output) != 'undefined') {					obj.__output = najaxResponse.output;				} else {					obj.__output = null;				}				return {					returnValue	:	najaxResponse.returnValue				};			}		}		return false;	};	try {		xmlHttp.setRequestHeader('Content-Length', requestBody.length);		xmlHttp.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8');		xmlHttp.setRequestHeader('Accept-Charset', 'UTF-8');

⌨️ 快捷键说明

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