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

📄 connection.js

📁 Ext JS是一个创建丰富互联网应用程序的跨浏览器的JavaScrip库。它包含:高效率
💻 JS
📖 第 1 页 / 共 2 页
字号:
/*
 * Ext JS Library 3.0 Pre-alpha
 * Copyright(c) 2006-2008, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */

(function(){	var BEFOREREQUEST = "beforerequest",		REQUESTCOMPLETE = "requestcomplete",		REQUESTEXCEPTION = "requestexception",        UNDEFINED = undefined,		LOAD = 'load',		POST = 'POST',		GET = 'GET',		WINDOW = window;		/**	 * @class Ext.data.Connection	 * @extends Ext.util.Observable	 * <p>The class encapsulates a connection to the page's originating domain, allowing requests to be made	 * either to a configured URL, or to a URL specified at request time.</p>	 * <p>Requests made by this class are asynchronous, and will return immediately. No data from	 * the server will be available to the statement immediately following the {@link #request} call.	 * To process returned data, use a	 * <a href="#request-option-success" ext:member="request-option-success" ext:cls="Ext.data.Connection">success callback</a>	 * in the request options object,	 * or an {@link #requestcomplete event listener}.</p>	 * <p><h3>File Uploads</h3><a href="#request-option-isUpload" ext:member="request-option-isUpload" ext:cls="Ext.data.Connection">File uploads</a> are not performed using normal "Ajax" techniques, that	 * is they are <b>not</b> performed using XMLHttpRequests. Instead the form is submitted in the standard	 * manner with the DOM <tt>&lt;form></tt> element temporarily modified to have its	 * <a href="http://www.w3.org/TR/REC-html40/present/frames.html#adef-target">target</a> set to refer	 * to a dynamically generated, hidden <tt>&lt;iframe></tt> which is inserted into the document	 * but removed after the return data has been gathered.</p>	 * <p>The server response is parsed by the browser to create the document for the IFRAME. If the	 * server is using JSON to send the return object, then the	 * <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17">Content-Type</a> header	 * must be set to "text/html" in order to tell the browser to insert the text unchanged into the document body.</p>	 * <p>Characters which are significant to an HTML parser must be sent as HTML entities, so encode	 * "&lt;" as "&amp;lt;", "&amp;" as "&amp;amp;" etc.</p>	 * <p>The response text is retrieved from the document, and a fake XMLHttpRequest object	 * is created containing a <tt>responseText</tt> property in order to conform to the	 * requirements of event handlers and callbacks.</p>	 * <p>Be aware that file upload packets are sent with the content type <a href="http://www.faqs.org/rfcs/rfc2388.html">multipart/form</a>	 * and some server technologies (notably JEE) may require some custom processing in order to	 * retrieve parameter names and parameter values from the packet content.</p>	 * @constructor	 * @param {Object} config a configuration object.	 */	Ext.data.Connection = function(config){		    Ext.apply(this, config);	    this.addEvents(	        /**	         * @event beforerequest	         * Fires before a network request is made to retrieve a data object.	         * @param {Connection} conn This Connection object.	         * @param {Object} options The options config object passed to the {@link #request} method.	         */	        BEFOREREQUEST,	        /**	         * @event requestcomplete	         * Fires if the request was successfully completed.	         * @param {Connection} conn This Connection object.	         * @param {Object} response The XHR object containing the response data.	         * See <a href="http://www.w3.org/TR/XMLHttpRequest/">The XMLHttpRequest Object</a>	         * for details.	         * @param {Object} options The options config object passed to the {@link #request} method.	         */	        REQUESTCOMPLETE,	        /**	         * @event requestexception	         * Fires if an error HTTP status was returned from the server.	         * See <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">HTTP Status Code Definitions</a>	         * for details of HTTP status codes.	         * @param {Connection} conn This Connection object.	         * @param {Object} response The XHR object containing the response data.	         * See <a href="http://www.w3.org/TR/XMLHttpRequest/">The XMLHttpRequest Object</a>	         * for details.	         * @param {Object} options The options config object passed to the {@link #request} method.	         */	        REQUESTEXCEPTION	    );	    Ext.data.Connection.superclass.constructor.call(this);	};	// private    function handleResponse(response){        this.transId = false;        var options = response.argument.options;        response.argument = options ? options.argument : null;        this.fireEvent(REQUESTCOMPLETE, this, response, options);        if(options.success) options.success.call(options.scope, response, options);        if(options.callback) options.callback.call(options.scope, options, true, response);    }    // private    function handleFailure(response, e){        this.transId = false;        var options = response.argument.options;        response.argument = options ? options.argument : null;        this.fireEvent(REQUESTEXCEPTION, this, response, options, e);        if(options.failure) options.failure.call(options.scope, response, options);        if(options.callback) options.callback.call(options.scope, options, false, response);    }	// private    function doFormUpload(o, ps, url){        var id = Ext.id(),        	doc = document,        	frame = doc.createElement('iframe'),        	form = Ext.getDom(o.form),        	hiddens = [],        	hd;        	        frame.id = frame.name = id;                 frame.className = 'x-hidden';                frame.src = Ext.SSL_SECURE_URL; // for IE                doc.body.appendChild(frame);        if(Ext.isIE){        	doc.frames[id].name = id;        }                form.target = id;        form.method = POST;        form.enctype = form.encoding = 'multipart/form-data';                form.action = url || "";                // add dynamic params                    ps = Ext.urlDecode(ps, false);        for(var k in ps){            if(ps.hasOwnProperty(k)){                hd = doc.createElement('input');                hd.type = 'hidden';                                    hd.value = ps[hd.name = k];                form.appendChild(hd);                hiddens.push(hd);            }        }                function cb(){            var me = this,            	// bogus response object            	r = {responseText : '',	                 responseXML : null,	                 argument : o.argument},            	doc,            	firstChild;            try {                 doc = frame.contentWindow.document || frame.contentDocument || WINDOW.frames[id].document;                if (doc) {	            	if (doc.body) {		            	if (/textarea/i.test((firstChild = doc.body.firstChild || {}).tagName)) { // json response wrapped in textarea	                                            	r.responseText = firstChild.value;	                    } else {	                        r.responseText = doc.body.innerHTML;	                    }	            	} else {		            	r.responseXML = doc.XMLDocument || doc;		           	}                }            }            catch(e) {}            Ext.EventManager.removeListener(frame, LOAD, cb, me);            me.fireEvent(REQUESTCOMPLETE, me, r, o);            Ext.callback(o.success, o.scope, [r, o]);            Ext.callback(o.callback, o.scope, [o, true, r]);            if(!me.debugUploads){                setTimeout(function(){Ext.removeNode(frame);}, 100);            }        }        Ext.EventManager.on(frame, LOAD, cb, this);        form.submit();                Ext.each(hiddens, function(h) {	        Ext.removeNode(h);        });    }    	    	Ext.extend(Ext.data.Connection, Ext.util.Observable, {	    /**	     * @cfg {String} url (Optional) The default URL to be used for requests to the server. (defaults to undefined)	     */	    /**	     * @cfg {Object} extraParams (Optional) An object containing properties which are used as	     * extra parameters to each request made by this object. (defaults to undefined)	     */	    /**	     * @cfg {Object} defaultHeaders (Optional) An object containing request headers which are added	     *  to each request made by this object. (defaults to undefined)	     */	    /**	     * @cfg {String} method (Optional) The default HTTP method to be used for requests.	     * (defaults to undefined; if not set, but {@link #request} params are present, POST will be used;	     * otherwise, GET will be used.)	     */	    /**	     * @cfg {Number} timeout (Optional) The timeout in milliseconds to be used for requests. (defaults to 30000)	     */	    timeout : 30000,	    /**	     * @cfg {Boolean} autoAbort (Optional) Whether this request should abort any pending requests. (defaults to false)	     * @type Boolean	     */	    autoAbort:false,		    /**	     * @cfg {Boolean} disableCaching (Optional) True to add a unique cache-buster param to GET requests. (defaults to true)	     * @type Boolean	     */	    disableCaching: true,	    	    /**	     * @cfg {String} disableCachingParam (Optional) Change the parameter which is sent went disabling caching	     * through a cache buster. Defaults to '_dc'	     * @type String	     */	    disableCachingParam: '_dc',        	    /**	     * <p>Sends an HTTP request to a remote server.</p>	     * <p><b>Important:</b> Ajax server requests are asynchronous, and this call will	     * return before the response has been received. Process any returned data	     * in a callback function.</p>	     * <pre><code>Ext.Ajax.request({   url: 'ajax_demo/sample.json',   success: function(response, opts) {      var obj = Ext.decode(response.responseText);      console.dir(obj);   },   failure: function(response, opts) {      console.log('server-side failure with status code ' + response.status);   }});	     * </code></pre>	     * <p>To execute a callback function in the correct scope, use the <tt>scope</tt> option.</p>	     * @param {Object} options An object which may contain the following properties:<ul>	     * <li><b>url</b> : String/Function (Optional)<div class="sub-desc">The URL to	     * which to send the request, or a function to call which returns a URL string. The scope of the	     * function is specified by the <tt>scope</tt> option. Defaults to the configured	     * <tt>{@link #url}</tt>.</div></li>	     * <li><b>params</b> : Object/String/Function (Optional)<div class="sub-desc">	     * An object containing properties which are used as parameters to the	     * request, a url encoded string or a function to call to get either. The scope of the function	     * is specified by the <tt>scope</tt> option.</div></li>	     * <li><b>method</b> : String (Optional)<div class="sub-desc">The HTTP method to use	     * for the request. Defaults to the configured method, or if no method was configured,	     * "GET" if no parameters are being sent, and "POST" if parameters are being sent.  Note that	     * the method name is case-sensitive and should be all caps.</div></li>	     * <li><b>callback</b> : Function (Optional)<div class="sub-desc">The	     * function to be called upon receipt of the HTTP response. The callback is	     * called regardless of success or failure and is passed the following	     * parameters:<ul>	     * <li><b>options</b> : Object<div class="sub-desc">The parameter to the request call.</div></li>	     * <li><b>success</b> : Boolean<div class="sub-desc">True if the request succeeded.</div></li>	     * <li><b>response</b> : Object<div class="sub-desc">The XMLHttpRequest object containing the response data. 	     * See <a href="http://www.w3.org/TR/XMLHttpRequest/">http://www.w3.org/TR/XMLHttpRequest/</a> for details about 	     * accessing elements of the response.</div></li>	     * </ul></div></li>	     * <li><a id="request-option-success"></a><b>success</b> : Function (Optional)<div class="sub-desc">The function	     * to be called upon success of the request. The callback is passed the following	     * parameters:<ul>	     * <li><b>response</b> : Object<div class="sub-desc">The XMLHttpRequest object containing the response data.</div></li>	     * <li><b>options</b> : Object<div class="sub-desc">The parameter to the request call.</div></li>	     * </ul></div></li>

⌨️ 快捷键说明

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