📄 ajax_queue.js
字号:
var g_ajax_obj = new c_ajax_object; // This will be the gobal AJAX object. There can be only one.../****************************************************************** This class handles "queueing" objects in a pseudo-asynchronous fashion. Ajax can't actually handle multiple streams, so we "queue" the requests to execute one after another.*/function c_ajax_object() { // THIS SPACE FOR RENT};// Initialize up the prototype fields.c_ajax_object.prototype._dm_xmlhttprequest_type=null; // Used when trying for the correct XMLHTTP object type.c_ajax_object.prototype._dm_xmlhttprequestobject=null; // This is the HTTP Request Object for this instance.c_ajax_object.prototype._dm_callback_function=null; // The function to be called upon completion of a request.c_ajax_object.prototype._dm_param=null; // An additional parameter to be passed to the functionc_ajax_object.prototype._dm_partialcallback_function=null; // A function to be called for the interactive phasec_ajax_object.prototype._dm_param2=null; // An additional parameter to be passed to that functionc_ajax_object.prototype._dm_phase=0; // The phase during which this function is called (Default 3).c_ajax_object.prototype._dm_queue=new Array(); // This is the queuec_ajax_object.prototype._dm_queue_state=true; // This is the queue state // false = paused // true = normalc_ajax_object.prototype._dm_committed=false; // This is set to true when the HTTPRequest reaches Stage 3.c_ajax_object.prototype._dm_pre_queue_in_url=null; // These are all used for the "pre-queue."c_ajax_object.prototype._dm_pre_queue_in_callback=null;c_ajax_object.prototype._dm_pre_queue_in_method=null;c_ajax_object.prototype._dm_pre_queue_in_param=null;c_ajax_object.prototype._dm_pre_queue_in_pcallback=null;c_ajax_object.prototype._dm_pre_queue_in_param2=null;c_ajax_object.prototype._dm_pre_queue_in_c2_phase=0;/****************************************************************** Constructs a new HTTP Request object. IE and the rest of the world have different ideas about what constitutes an HTTP Request class, so we deal with that here. We use the conditional Jscript stuff that IE supports to create an *.XMLHTTP object, or the standard Mozilla/Netscape XMLHttpRequest object. We use this as a test. If this object can't create the HTTP request object (either XMLHttpRequest or *.XMLHTTP), then the browser can't handle AJAX.*/// New version, created by Jeremy Lucierc_ajax_object.prototype.GetNewRequestObject = function() { // check the dom to see if this is IE or not if (window.XMLHttpRequest) { // Not IE this._dm_xmlhttprequestobject = new XMLHttpRequest(); } else if (window.ActiveXObject) { // Hello IE! // Instantiate the latest MS ActiveX Objects if (this._dm_xmlhttprequest_type) { this._dm_xmlhttprequestobject = new ActiveXObject(this._dm_xmlhttprequest_type); } else { // loops through the various versions of XMLHTTP to ensure we're using the latest var versions = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; for (var i = 0; i < versions.length ; i++) { try { // try to create the object // if it doesn't work, we'll try again // if it does work, we'll save a reference to the proper one to speed up future instantiations this._dm_xmlhttprequestobject = new ActiveXObject(versions[i]); if (this._dm_xmlhttprequestobject) { this._dm_xmlhttprequest_type = versions[i]; break; } } catch (objException) { // trap; try next one }; }; } }};// Original Function// c_ajax_object.prototype.GetNewRequestObject = function() {// /*// All this whacky stuff is for Internet Exploder.// IE uses conditional macros, so we first try to create an IE request// object, using their macros. If this succeeds, then we don't try to// do it the other way.// This came from http://swik.net/// */// /*@cc_on @*/// // /*@if (@_jscript_version >= 5)// try {// this._dm_xmlhttprequestobject = new ActiveXObject("Msxml2.XMLHTTP");// }// catch (e) {// try {// this._dm_xmlhttprequestobject = new ActiveXObject("Microsoft.XMLHTTP");// }// catch (e2) {// this._dm_xmlhttprequestobject = false;// }// }// @end @*/// // if ( !this._dm_xmlhttprequestobject && (typeof XMLHttpRequest != 'undefined') ) {// this._dm_xmlhttprequestobject = new XMLHttpRequest();// }// };/****************************************************************** Kills the Queue (non-negotiable cancel). If there is still an HTTPRequest out there, it will allow that to complete.*/c_ajax_object.prototype.QueueFlush = function ( ) { this._dm_queue = new Array(); this.QueueResume(); // If the queue was paused, it is now re-enabled}/****************************************************************** This pauses the queue by clearing a semaphore. If there is still an HTTPRequest out there, it will allow that to complete.*/c_ajax_object.prototype.QueuePause = function ( ) { this._dm_queue_state = false;}/****************************************************************** This re-enables the queue. It calls Dequeue() to start the chain going again.*/c_ajax_object.prototype.QueueResume = function ( ) { this._dm_queue_state = true; this.Dequeue();}/****************************************************************** This bypasses the queue, and injects an HTTPRequest right in. This is a dangerous call, as it wipes out any command currently being run. Params: in_url: The URL to call in_callback: A function to be called upon completion in_method: The HTTP method to use (default is GET). in_param: A parameter (any type) that is passed into the callback in_pcallback: Partial callback in_param2: A second parameter for the partial callback in_phase: The phase during which the second callback will be made (1-3), Default is 3.*/c_ajax_object.prototype.QueueInterrupt = function ( in_url, in_callback, in_method, in_param, in_pcallback, in_param2, in_phase ) { var url = in_url; this._dm_callback_function = in_callback; // The basic callback var method = in_method; this._dm_param = in_param; // If there is a parameter, we get it here. this._dm_partialcallback_function = in_pcallback; // If there is a partial callback, we get it here. this._dm_param2 = in_param2; // If there is a second parameter, we get it here. this._dm_phase = in_phase; // If there is a second parameter, we get it here. if ( url && method ) { ret = this._CallXMLHTTPObject ( url, method ); } return ret;}/****************************************************************** This is a gentler version of the above. It injects the command as the next one to be processed, cutting the line. Params: in_url: The URL to call in_callback: A function to be called upon completion in_method: The HTTP method to use (default is GET). in_param: A parameter (any type) that is passed into the callback in_pcallback: Partial callback in_param2: A second parameter for the partial callback in_phase: The phase during which the second callback will be made (1-3), Default is 3.*/c_ajax_object.prototype.QueueInject = function ( in_url, in_callback, in_method, in_param, in_pcallback, in_param2, in_phase ) { this._dm_queue_state = false; // Move the queue up one to make room at the start. for ( var counter = this._dm_queue.length; counter > 0; counter-- ) { this._dm_queue[counter] = this._dm_queue[counter - 1]; } this._dm_queue[0] = new Array ( in_url, in_callback, in_method, in_param, in_pcallback, in_param2, in_phase ); this._dm_queue_state = true; // We don't call DeQueue, so we won't interrupt any request in progress.}/****************************************************************** Basic Ajax Call for GET method Params: in_url: The URL to call in_callback: A function to be called upon completion*/c_ajax_object.prototype.CallXMLHTTPObjectGET = function ( in_url, in_callback ) { return this.CallXMLHTTPObject ( in_url, in_callback, "GET", null, null, 0 );}/****************************************************************** Basic Ajax Call for GET method (with additional parameter) Params: in_url: The URL to call in_callback: A function to be called upon completion in_param: A parameter (any type) that is passed into the callback This parameter is used to pass things such as a field ID, etc. to the callback, and can be used to propagate a context. Callbacks tend to be free of context, so this helps to get around that problem.*/c_ajax_object.prototype.CallXMLHTTPObjectGETParam = function ( in_url, in_callback, in_param ) { return this.CallXMLHTTPObject ( in_url, in_callback, "GET", in_param, null, 0 );}/****************************************************************** Basic Ajax Call for GET method (with additional parameter and partial callback) Params: in_url: The URL to call in_callback: A function to be called upon completion in_param: A parameter (any type) that is passed into the callback This parameter is used to pass things such as a field ID, etc. to the callback, and can be used to propagate a context. Callbacks tend to be free of context, so this helps to get around that problem. in_pcallback: This specifies a "partial callback" function that is called when the request reaches Phase 3 (interactive). in_param2: A second parameter for the partial callback*/c_ajax_object.prototype.CallXMLHTTPObjectGETParamPartial = function ( in_url, in_callback, in_param, in_pcallback, in_param2 ) { return this.CallXMLHTTPObject ( in_url, in_callback, "GET", in_param, in_pcallback, in_param2, 0 );}/****************************************************************** Basic Ajax Call for GET method (with additional parameter, partial callback and partial callback phase) Params: in_url: The URL to call in_callback: A function to be called upon completion in_param: A parameter (any type) that is passed into the callback This parameter is used to pass things such as a field ID, etc. to the callback, and can be used to propagate a context. Callbacks tend to be free of context, so this helps to get around that problem. in_pcallback: This specifies a "partial callback" function that is called when the request reaches Phase 3 (interactive). in_param2: A second parameter for the partial callback in_phase: The request phase (1-3) during which the partial callback is made.*/c_ajax_object.prototype.CallXMLHTTPObjectGETParamPartialPhase = function ( in_url, in_callback, in_param, in_pcallback, in_param2, in_phase ) { return this.CallXMLHTTPObject ( in_url, in_callback, "GET", in_param, in_pcallback, in_param2, in_phase );}/****************************************************************** Basic Ajax Call for POST method Params: in_url: The URL to call in_callback: A function to be called upon completion*/c_ajax_object.prototype.CallXMLHTTPObjectPOST = function ( in_url, in_callback ) { return this.CallXMLHTTPObject ( in_url, in_callback, "POST", null, null, 0 );}/****************************************************************** Basic Ajax Call for POST method (with additional parameter) Params: in_url: The URL to call in_callback: A function to be called upon completion in_param: A parameter (any type) that is passed into the callback This parameter is used to pass things such as a field ID, etc. to the callback, and can be used to propagate a context. Callbacks tend to be free of context, so this helps to get around that problem.*/c_ajax_object.prototype.CallXMLHTTPObjectPOSTParam = function ( in_url, in_callback, in_param ) { return this.CallXMLHTTPObject ( in_url, in_callback, "POST", in_param, null, 0 );}/****************************************************************** Basic Ajax Call for POST method (with additional parameter and partial callback) Params: in_url: The URL to call in_callback: A function to be called upon completion in_param: A parameter (any type) that is passed into the callback This parameter is used to pass things such as a field ID, etc. to the callback, and can be used to propagate a context. Callbacks tend to be free of context, so this helps to get around that problem. in_pcallback: This specifies a "partial callback" function that is called when the request reaches Phase 3 (interactive). in_param2: A second parameter for the partial callback*/c_ajax_object.prototype.CallXMLHTTPObjectPOSTParamPartial = function ( in_url, in_callback, in_param, in_pcallback, in_param2 ) { return this.CallXMLHTTPObject ( in_url, in_callback, "POST", in_param, in_pcallback, in_param2, 0 );}/****************************************************************** Basic Ajax Call for POST method (with additional parameter, partial callback and partial callback phase) Params: in_url: The URL to call in_callback: A function to be called upon completion in_param: A parameter (any type) that is passed into the callback This parameter is used to pass things such as a field ID,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -