X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6746dc89c47ed01b165cc1152533605f97eb8e8d..f562e4c6e5fac7bcb445985b99acbea4d706e6f0:/src/data/JsonP.js diff --git a/src/data/JsonP.js b/src/data/JsonP.js index 5596c785..f330a33f 100644 --- a/src/data/JsonP.js +++ b/src/data/JsonP.js @@ -16,22 +16,21 @@ If you are unsure which license is appropriate for your use, please contact the * @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 here. */ Ext.define('Ext.data.JsonP', { - + /* Begin Definitions */ - + singleton: true, - + statics: { requestCount: 0, requests: {} }, - + /* End Definitions */ - + /** * @property timeout * @type Number @@ -39,21 +38,21 @@ Ext.define('Ext.data.JsonP', { * failure callback will be fired. The timeout is in ms. Defaults to 30000. */ timeout: 30000, - + /** * @property disableCaching * @type Boolean * True to add a unique cache-buster param to requests. Defaults to true. */ disableCaching: true, - + /** - * @property disableCachingParam + * @property disableCachingParam * @type String * Change the parameter which is sent went disabling caching through a cache buster. Defaults to '_dc'. */ disableCachingParam: '_dc', - + /** * @property callbackKey * @type String @@ -62,7 +61,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 @@ -82,7 +81,7 @@ Ext.define('Ext.data.JsonP', { *
  • disableCachingParam : String (Optional)
    See {@link #disableCachingParam}
  • *
  • success : Function (Optional)
    A function to execute if the request succeeds.
  • *
  • failure : Function (Optional)
    A function to execute if the request fails.
  • - *
  • callback : Function (Optional)
    A function to execute when the request + *
  • callback : Function (Optional)
    A function to execute when the request * completes, whether it is a success or failure.
  • *
  • scope : Object (Optional)
    The scope in * which to execute the callbacks: The "this" object for the callback function. Defaults to the browser window.
  • @@ -91,32 +90,33 @@ Ext.define('Ext.data.JsonP', { */ request: function(options){ options = Ext.apply({}, options); - + // if (!options.url) { Ext.Error.raise('A url must be specified for a JSONP request.'); } // - - 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), + + 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, @@ -128,17 +128,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. @@ -147,7 +147,7 @@ Ext.define('Ext.data.JsonP', { abort: function(request){ var requests = this.statics().requests, key; - + if (request) { if (!request.id) { request = requests[request]; @@ -161,7 +161,7 @@ Ext.define('Ext.data.JsonP', { } } }, - + /** * Sets up error handling for the script * @private @@ -170,7 +170,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 @@ -180,7 +180,7 @@ Ext.define('Ext.data.JsonP', { request.errorType = 'abort'; this.handleResponse(null, request); }, - + /** * Handles any script errors when loading the script * @private @@ -190,7 +190,7 @@ Ext.define('Ext.data.JsonP', { request.errorType = 'error'; this.handleResponse(null, request); }, - + /** * Cleans up anu script handling errors * @private @@ -199,7 +199,7 @@ Ext.define('Ext.data.JsonP', { cleanupErrorHandling: function(request){ request.script.onerror = null; }, - + /** * Handle any script timeouts * @private @@ -209,7 +209,7 @@ Ext.define('Ext.data.JsonP', { request.errorType = 'timeout'; this.handleResponse(null, request); }, - + /** * Handle a successful response * @private @@ -217,9 +217,9 @@ Ext.define('Ext.data.JsonP', { * @param {Object} request The request */ handleResponse: function(result, request){ - + var success = true; - + if (request.timeout) { clearTimeout(request.timeout); } @@ -227,7 +227,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]); @@ -236,7 +236,7 @@ Ext.define('Ext.data.JsonP', { } Ext.callback(request.callback, request.scope, [success, result, request.errorType]); }, - + /** * Create the script tag * @private