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

📄 najax.js

📁 Ajax最流行书籍
💻 JS
📖 第 1 页 / 共 2 页
字号:
	} catch (e) {}	if (methodCallback != null) {		xmlHttp.onreadystatechange = function() {			if (xmlHttp.readyState == 4) {				var response = requestCompleted();				if (typeof(response.returnValue) != 'undefined') {					methodCallback(response.returnValue);				}			}		}	}	if (callTimeout != null) {		eval('najax.callbacks.table.call' + callId + ' = {}');		eval('najax.callbacks.table.call' + callId + '.timeout = false');		eval('najax.callbacks.table.call' + callId + '.source = obj');		eval('najax.callbacks.table.call' + callId + '.id = '		+ 'window.setTimeout(\'najax.callbacks.table.call' + callId + '.timeout = true; '		+ 'najax.throwException(najax.getError(NAJAX_ERROR_TIMEOUT, "Timeout."), [najax.callbacks.table.call' + callId + '.source, "' + method + '"]);\', callTimeout)');	}	xmlHttp.send(requestBody);	if (methodCallback == null) {		var response = requestCompleted();		if (typeof(response.returnValue) != 'undefined') {			return response.returnValue;		}		return null;	} else {		callResult = new najax.callSuspender();		return callResult;	}};najax.catchEvent = function(obj, eventArguments){	if (eventArguments.length < 2) {		eventArguments[1] = null;	}	var eventData = {		listener	:	obj,		event		:	eventArguments[0],		filter		:	eventArguments[1]	};	najax.events.table.push(eventData);	najax.events.tableLength ++;	if (najax.events.status < 1) {		najax.events.status = 1;		window.setTimeout('najax.dispatchEvents()', najax.events.startInterval);	}	return true;};najax.ignoreEvent = function(obj, eventArguments){	if (najax.events.tableLength < 1) {		return false;	}	if (eventArguments.length < 2) {		eventArguments[1] = null;	}	for (var iterator = najax.events.table.length - 1; iterator >= 0; iterator --) {		var event = najax.events.table[iterator];		if (		(event.listener.__uid == obj.__uid) &&		(event.event == eventArguments[0]) &&		(event.filter == eventArguments[1])) {			najax.events.table[iterator] = null;			najax.events.tableLength --;			break;		}	}	return true;};najax.queueDispatchEvents = function(time){	if (typeof(time) == 'undefined') {		time = najax.events.refreshInterval;	}	window.setTimeout('najax.dispatchEvents()', time);};najax.dispatchEvents = function(){	if (najax.events.tableLength < 1) {		najax.events.status = 0;		return false;	}	if (	(typeof(najax.events.callbackUrl) != 'string') ||	(typeof(najax.events.lastRefresh) != 'number')) {		najax.events.status = 0;		return false;	}	najax.events.status = 1;	var eventsData = [];	for (var iterator = 0; iterator < najax.events.table.length; iterator ++) {		var event = najax.events.table[iterator];		if (event != null) {			eventsData.push({				className	:	event.listener.__class,				event		:	event.event,				filter		:	event.filter			});		}	}	var xmlHttp = najax.getXmlHttp();	var requestBody = najax.serialize({		eventsCallback	:	true,		time			:	najax.events.lastRefresh,		data			:	eventsData	});	var url = najax.events.callbackUrl;	if (url.indexOf('?') < 0) {		url += '?';	} else {		url += '&';	}	url += 'najaxCall=true';	xmlHttp.open('POST', url, true);	var callId = najax.callbacks.count ++;	var requestCompleted = function() {		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) {			najax.queueDispatchEvents();			return false;		} else {			if (xmlHttp.responseText == null) {				najax.queueDispatchEvents();				return false;			}			if (xmlHttp.responseText.length < 1) {				najax.queueDispatchEvents();				return false;			}			try {				eval('var najaxResponse = ' + xmlHttp.responseText + ';');			} catch(e) {				najax.queueDispatchEvents();				return false;			}			if (typeof(najaxResponse) != 'object') {				najax.queueDispatchEvents();				return false;			}			if (najax.notifyObservers('dispatchEventsCompleted', najaxResponse)) {				for (var serverIterator = 0; serverIterator < najaxResponse.result.length; serverIterator ++) {					var serverEvent = najaxResponse.result[serverIterator];					for (var clientIterator = 0; clientIterator < najax.events.table.length; clientIterator ++) {						var clientEvent = najax.events.table[clientIterator];						if (clientEvent != null) {							if (							(serverEvent.event == clientEvent.event) &&							(serverEvent.className.toLowerCase() == clientEvent.listener.__class.toLowerCase()) &&							(serverEvent.filter == clientEvent.filter)) {								eval('if (typeof(clientEvent.listener.' + clientEvent.event + ') == "function") { '								+ 'clientEvent.listener.' + clientEvent.event + '(serverEvent.eventData.sender, serverEvent.eventData.data) }');							}						}					}					if (serverEvent.time > najax.events.lastRefresh) {						najax.events.lastRefresh = serverEvent.time;					}				}				najax.queueDispatchEvents();				return true;			}		}		return false;	};	try {		xmlHttp.setRequestHeader('Content-Length', requestBody.length);		xmlHttp.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8');		xmlHttp.setRequestHeader('Accept-Charset', 'UTF-8');	} catch (e) {}	xmlHttp.onreadystatechange = function() {		if (xmlHttp.readyState == 4) {			najax.events.status = 3;			requestCompleted();			najax.events.status = 1;		}	};	eval('najax.callbacks.table.call' + callId + ' = {}');	eval('najax.callbacks.table.call' + callId + '.timeout = false');	eval('najax.callbacks.table.call' + callId + '.id = '	+ 'window.setTimeout(\'najax.callbacks.table.call' + callId + '.timeout = true; '	+ 'najax.queueDispatchEvents();\', najax.events.timeout)');	najax.events.status = 2;	xmlHttp.send(requestBody);	return true;};najax.queuePostEvent = function(eventId){	if (typeof(najax.events.postTable[eventId]) == 'object') {		najax.postEvent(najax.events.postTable[eventId].sender, [		najax.events.postTable[eventId].event,		najax.events.postTable[eventId].data,		najax.events.postTable[eventId].filter,		eventId]);	}};najax.postEvent = function(obj, eventArguments){	if (typeof(najax.events.callbackUrl) != 'string') {		return false;	}	var	eventName = eventArguments[0];	var eventData = (eventArguments.length > 1) ? eventArguments[1] : null;	var eventFilter = (eventArguments.length > 2) ? eventArguments[2] : null;	var eventId = (eventArguments.length > 3) ? eventArguments[3] : najax.events.postTable.length;	najax.events.postTable[eventId] = {		sender		:	obj,		event		:	eventName,		data		:	eventData,		filter		:	eventFilter	};	var xmlHttp = najax.getXmlHttp();	var requestBody = najax.serialize({		eventPost	:	true,		className	:	obj.__class,		sender		:	najax.serialize(obj),		event		:	eventName,		data		:	eventData,		filter		:	eventFilter	});	var url = najax.events.callbackUrl;	if (url.indexOf('?') < 0) {		url += '?';	} else {		url += '&';	}	url += 'najaxCall=true';	xmlHttp.open('POST', url, true);	var requestCompleted = function() {		if (xmlHttp.status != 200) {			najax.queuePostEvent(eventId);			return false;		} else {			if (xmlHttp.responseText == null) {				najax.queuePostEvent(eventId);				return false;			}			if (xmlHttp.responseText.length < 1) {				najax.queuePostEvent(eventId);				return false;			}			try {				eval('var najaxResponse = ' + xmlHttp.responseText + ';');			} catch(e) {				najax.queuePostEvent(eventId);				return false;			}			if (typeof(najaxResponse) != 'object') {				najax.queuePostEvent(eventId);				return false;			}			if (najaxResponse.status != true) {				najax.queuePostEvent(eventId);				return false;			}			if (najax.notifyObservers('postEventCompleted', najaxResponse)) {				najax.events.postTable[eventId] = null;				return true;			}		}		return false;	};	try {		xmlHttp.setRequestHeader('Content-Length', requestBody.length);		xmlHttp.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8');		xmlHttp.setRequestHeader('Accept-Charset', 'UTF-8');	} catch (e) {}	xmlHttp.onreadystatechange = function() {		if (xmlHttp.readyState == 4) {			requestCompleted();		}	};	xmlHttp.send(requestBody);	return true;};najax.addObserver = function(observer){	najax.observers.push(observer);	return true;};najax.notifyObservers = function(event){	if (najax.observers.length < 1) {		return true;	}	var eventMethod = 'on' + event.charAt(0).toUpperCase() + event.substr(1);	var notifyArguments = [];	for (var iterator = 1; iterator < arguments.length; iterator ++) {		notifyArguments.push(arguments[iterator]);	}	for (var iterator = 0; iterator < najax.observers.length; iterator ++) {		najax.invokeMethod(najax.observers[iterator], eventMethod, notifyArguments);	}	return true;};

⌨️ 快捷键说明

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