X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/7a654f8d43fdb43d78b63d90528bed6e86b608cc..f562e4c6e5fac7bcb445985b99acbea4d706e6f0:/docs/source/JsonP.html diff --git a/docs/source/JsonP.html b/docs/source/JsonP.html index 3423c4d5..0f1d3740 100644 --- a/docs/source/JsonP.html +++ b/docs/source/JsonP.html @@ -1,46 +1,62 @@ -
/**
+
+
+
+
+ The source code
+
+
+
+
+
+
+ /**
* @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
* A default timeout for any JsonP requests. If the request has not completed in this time the
* 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
* Specifies the GET parameter that will be sent to the server containing the function name to be executed when
@@ -48,8 +64,8 @@ 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
* take priority over any defaults that are specified in the class.
@@ -59,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>
@@ -72,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,
@@ -109,18 +131,18 @@ 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.
* @param {Object/String} request (Optional) The request to abort
@@ -128,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];
@@ -142,8 +164,8 @@ Ext.define('Ext.data.JsonP', {
}
}
},
-
- /**
+
+ /**
* Sets up error handling for the script
* @private
* @param {Object} request The request
@@ -151,8 +173,8 @@ 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
* @param {Object} request The request
@@ -161,8 +183,8 @@ Ext.define('Ext.data.JsonP', {
request.errorType = 'abort';
this.handleResponse(null, request);
},
-
- /**
+
+ /**
* Handles any script errors when loading the script
* @private
* @param {Object} request The request
@@ -171,8 +193,8 @@ Ext.define('Ext.data.JsonP', {
request.errorType = 'error';
this.handleResponse(null, request);
},
-
- /**
+
+ /**
* Cleans up anu script handling errors
* @private
* @param {Object} request The request
@@ -180,8 +202,8 @@ Ext.define('Ext.data.JsonP', {
cleanupErrorHandling: function(request){
request.script.onerror = null;
},
-
- /**
+
+ /**
* Handle any script timeouts
* @private
* @param {Object} request The request
@@ -190,17 +212,17 @@ Ext.define('Ext.data.JsonP', {
request.errorType = 'timeout';
this.handleResponse(null, request);
},
-
- /**
+
+ /**
* Handle a successful response
* @private
* @param {Object} result The result from the request
* @param {Object} request The request
*/
handleResponse: function(result, request){
-
+
var success = true;
-
+
if (request.timeout) {
clearTimeout(request.timeout);
}
@@ -208,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]);
@@ -217,8 +239,8 @@ Ext.define('Ext.data.JsonP', {
}
Ext.callback(request.callback, request.scope, [success, result, request.errorType]);
},
-
- /**
+
+ /**
* Create the script tag
* @private
* @param {String} url The url of the request
@@ -232,4 +254,6 @@ Ext.define('Ext.data.JsonP', {
return script;
}
});
-
\ No newline at end of file
+
+
+