X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/3789b528d8dd8aad4558e38e22d775bcab1cbd36..f562e4c6e5fac7bcb445985b99acbea4d706e6f0:/docs/source/JsonP.html diff --git a/docs/source/JsonP.html b/docs/source/JsonP.html index 438203b8..0f1d3740 100644 --- a/docs/source/JsonP.html +++ b/docs/source/JsonP.html @@ -3,8 +3,8 @@ The source code - - + + @@ -19,22 +19,21 @@ * @class Ext.data.JsonP * @singleton * This class is used to create JSONP requests. JSONP is a mechanism that allows for making - * requests for data cross domain. More information is available here: - * http://en.wikipedia.org/wiki/JSONP + * requests for data cross domain. More information is available <a href="http://en.wikipedia.org/wiki/JSONP">here</a>. */ Ext.define('Ext.data.JsonP', { - + /* Begin Definitions */ - + singleton: true, - + statics: { requestCount: 0, requests: {} }, - + /* End Definitions */ - + /** * @property timeout * @type Number @@ -42,21 +41,21 @@ Ext.define('Ext.data.JsonP', { * failure callback will be fired. The timeout is in ms. Defaults to <tt>30000</tt>. */ timeout: 30000, - + /** * @property disableCaching * @type Boolean * True to add a unique cache-buster param to requests. Defaults to <tt>true</tt>. */ disableCaching: true, - + /** - * @property disableCachingParam + * @property disableCachingParam * @type String * Change the parameter which is sent went disabling caching through a cache buster. Defaults to <tt>'_dc'</tt>. */ disableCachingParam: '_dc', - + /** * @property callbackKey * @type String @@ -65,7 +64,7 @@ Ext.define('Ext.data.JsonP', { * url?callback=Ext.data.JsonP.callback1 */ callbackKey: 'callback', - + /** * Makes a JSONP request. * @param {Object} options An object which may contain the following properties. Note that options will @@ -76,11 +75,16 @@ Ext.define('Ext.data.JsonP', { * key value pairs that will be sent along with the request.</div></li> * <li><b>timeout</b> : Number (Optional) <div class="sub-desc">See {@link #timeout}</div></li> * <li><b>callbackKey</b> : String (Optional) <div class="sub-desc">See {@link #callbackKey}</div></li> + * <li><b>callbackName</b> : String (Optional) <div class="sub-desc">The function name to use for this request. + * By default this name will be auto-generated: Ext.data.JsonP.callback1, Ext.data.JsonP.callback2, etc. + * Setting this option to "my_name" will force the function name to be Ext.data.JsonP.my_name. + * Use this if you want deterministic behavior, but be careful - the callbackName should be different + * in each JsonP request that you make.</div></li> * <li><b>disableCaching</b> : Boolean (Optional) <div class="sub-desc">See {@link #disableCaching}</div></li> * <li><b>disableCachingParam</b> : String (Optional) <div class="sub-desc">See {@link #disableCachingParam}</div></li> * <li><b>success</b> : Function (Optional) <div class="sub-desc">A function to execute if the request succeeds.</div></li> * <li><b>failure</b> : Function (Optional) <div class="sub-desc">A function to execute if the request fails.</div></li> - * <li><b>callback</b> : Function (Optional) <div class="sub-desc">A function to execute when the request + * <li><b>callback</b> : Function (Optional) <div class="sub-desc">A function to execute when the request * completes, whether it is a success or failure.</div></li> * <li><b>scope</b> : Object (Optional)<div class="sub-desc">The scope in * which to execute the callbacks: The "this" object for the callback function. Defaults to the browser window.</div></li> @@ -89,32 +93,33 @@ Ext.define('Ext.data.JsonP', { */ request: function(options){ options = Ext.apply({}, options); - + //<debug> if (!options.url) { Ext.Error.raise('A url must be specified for a JSONP request.'); } //</debug> - - var me = this, - disableCaching = Ext.isDefined(options.disableCaching) ? options.disableCaching : me.disableCaching, - cacheParam = options.disableCachingParam || me.disableCachingParam, - id = ++me.statics().requestCount, - callbackName = 'callback' + id, - callbackKey = options.callbackKey || me.callbackKey, - timeout = Ext.isDefined(options.timeout) ? options.timeout : me.timeout, - params = Ext.apply({}, options.params), + + var me = this, + disableCaching = Ext.isDefined(options.disableCaching) ? options.disableCaching : me.disableCaching, + cacheParam = options.disableCachingParam || me.disableCachingParam, + id = ++me.statics().requestCount, + callbackName = options.callbackName || 'callback' + id, + callbackKey = options.callbackKey || me.callbackKey, + timeout = Ext.isDefined(options.timeout) ? options.timeout : me.timeout, + params = Ext.apply({}, options.params), url = options.url, - request, + name = Ext.isSandboxed ? Ext.getUniqueGlobalNamespace() : 'Ext', + request, script; - - params[callbackKey] = 'Ext.data.JsonP.' + callbackName; + + params[callbackKey] = name + '.data.JsonP.' + callbackName; if (disableCaching) { params[cacheParam] = new Date().getTime(); } - + script = me.createScript(url, params); - + me.statics().requests[id] = request = { url: url, params: params, @@ -126,17 +131,17 @@ Ext.define('Ext.data.JsonP', { callback: options.callback, callbackName: callbackName }; - + if (timeout > 0) { request.timeout = setTimeout(Ext.bind(me.handleTimeout, me, [request]), timeout); } - + me.setupErrorHandling(request); me[callbackName] = Ext.bind(me.handleResponse, me, [request], true); Ext.getHead().appendChild(script); return request; }, - + /** * Abort a request. If the request parameter is not specified all open requests will * be aborted. @@ -145,7 +150,7 @@ Ext.define('Ext.data.JsonP', { abort: function(request){ var requests = this.statics().requests, key; - + if (request) { if (!request.id) { request = requests[request]; @@ -159,7 +164,7 @@ Ext.define('Ext.data.JsonP', { } } }, - + /** * Sets up error handling for the script * @private @@ -168,7 +173,7 @@ Ext.define('Ext.data.JsonP', { setupErrorHandling: function(request){ request.script.onerror = Ext.bind(this.handleError, this, [request]); }, - + /** * Handles any aborts when loading the script * @private @@ -178,7 +183,7 @@ Ext.define('Ext.data.JsonP', { request.errorType = 'abort'; this.handleResponse(null, request); }, - + /** * Handles any script errors when loading the script * @private @@ -188,7 +193,7 @@ Ext.define('Ext.data.JsonP', { request.errorType = 'error'; this.handleResponse(null, request); }, - + /** * Cleans up anu script handling errors * @private @@ -197,7 +202,7 @@ Ext.define('Ext.data.JsonP', { cleanupErrorHandling: function(request){ request.script.onerror = null; }, - + /** * Handle any script timeouts * @private @@ -207,7 +212,7 @@ Ext.define('Ext.data.JsonP', { request.errorType = 'timeout'; this.handleResponse(null, request); }, - + /** * Handle a successful response * @private @@ -215,9 +220,9 @@ Ext.define('Ext.data.JsonP', { * @param {Object} request The request */ handleResponse: function(result, request){ - + var success = true; - + if (request.timeout) { clearTimeout(request.timeout); } @@ -225,7 +230,7 @@ Ext.define('Ext.data.JsonP', { delete this.statics()[request.id]; this.cleanupErrorHandling(request); Ext.fly(request.script).remove(); - + if (request.errorType) { success = false; Ext.callback(request.failure, request.scope, [request.errorType]); @@ -234,7 +239,7 @@ Ext.define('Ext.data.JsonP', { } Ext.callback(request.callback, request.scope, [success, result, request.errorType]); }, - + /** * Create the script tag * @private