Upgrade to ExtJS 4.0.7 - Released 10/19/2011
[extjs.git] / docs / source / JsonP.html
index 3423c4d..0f1d374 100644 (file)
@@ -1,46 +1,62 @@
-<!DOCTYPE html><html><head><title>Sencha Documentation Project</title><link rel="stylesheet" href="../reset.css" type="text/css"><link rel="stylesheet" href="../prettify.css" type="text/css"><link rel="stylesheet" href="../prettify_sa.css" type="text/css"><script type="text/javascript" src="../prettify.js"></script></head><body onload="prettyPrint()"><pre class="prettyprint"><pre><span id='Ext-data.JsonP'>/**
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <title>The source code</title>
+  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
+  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
+  <style type="text/css">
+    .highlight { display: block; background-color: #ddd; }
+  </style>
+  <script type="text/javascript">
+    function highlight() {
+      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
+    }
+  </script>
+</head>
+<body onload="prettyPrint(); highlight();">
+  <pre class="prettyprint lang-js"><span id='Ext-data-JsonP'>/**
 </span> * @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 &lt;a href=&quot;http://en.wikipedia.org/wiki/JSONP&quot;&gt;here&lt;/a&gt;.
  */
 Ext.define('Ext.data.JsonP', {
-    
+
     /* Begin Definitions */
-    
+
     singleton: true,
-    
+
     statics: {
         requestCount: 0,
         requests: {}
     },
-    
+
     /* End Definitions */
-    
-<span id='Ext-data.JsonP-property-timeout'>    /**
+
+<span id='Ext-data-JsonP-property-timeout'>    /**
 </span>     * @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 &lt;tt&gt;30000&lt;/tt&gt;.
      */
     timeout: 30000,
-    
-<span id='Ext-data.JsonP-property-disableCaching'>    /**
+
+<span id='Ext-data-JsonP-property-disableCaching'>    /**
 </span>     * @property disableCaching
      * @type Boolean
      * True to add a unique cache-buster param to requests. Defaults to &lt;tt&gt;true&lt;/tt&gt;.
      */
     disableCaching: true,
-   
-<span id='Ext-data.JsonP-property-disableCachingParam'>    /**
-</span>     * @property disableCachingParam 
+
+<span id='Ext-data-JsonP-property-disableCachingParam'>    /**
+</span>     * @property disableCachingParam
      * @type String
      * Change the parameter which is sent went disabling caching through a cache buster. Defaults to &lt;tt&gt;'_dc'&lt;/tt&gt;.
      */
     disableCachingParam: '_dc',
-   
-<span id='Ext-data.JsonP-property-callbackKey'>    /**
+
+<span id='Ext-data-JsonP-property-callbackKey'>    /**
 </span>     * @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',
-   
-<span id='Ext-data.JsonP-method-request'>    /**
+
+<span id='Ext-data-JsonP-method-request'>    /**
 </span>     * 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.&lt;/div&gt;&lt;/li&gt;
      * &lt;li&gt;&lt;b&gt;timeout&lt;/b&gt; : Number (Optional) &lt;div class=&quot;sub-desc&quot;&gt;See {@link #timeout}&lt;/div&gt;&lt;/li&gt;
      * &lt;li&gt;&lt;b&gt;callbackKey&lt;/b&gt; : String (Optional) &lt;div class=&quot;sub-desc&quot;&gt;See {@link #callbackKey}&lt;/div&gt;&lt;/li&gt;
+     * &lt;li&gt;&lt;b&gt;callbackName&lt;/b&gt; : String (Optional) &lt;div class=&quot;sub-desc&quot;&gt;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 &quot;my_name&quot; 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.&lt;/div&gt;&lt;/li&gt;
      * &lt;li&gt;&lt;b&gt;disableCaching&lt;/b&gt; : Boolean (Optional) &lt;div class=&quot;sub-desc&quot;&gt;See {@link #disableCaching}&lt;/div&gt;&lt;/li&gt;
      * &lt;li&gt;&lt;b&gt;disableCachingParam&lt;/b&gt; : String (Optional) &lt;div class=&quot;sub-desc&quot;&gt;See {@link #disableCachingParam}&lt;/div&gt;&lt;/li&gt;
      * &lt;li&gt;&lt;b&gt;success&lt;/b&gt; : Function (Optional) &lt;div class=&quot;sub-desc&quot;&gt;A function to execute if the request succeeds.&lt;/div&gt;&lt;/li&gt;
      * &lt;li&gt;&lt;b&gt;failure&lt;/b&gt; : Function (Optional) &lt;div class=&quot;sub-desc&quot;&gt;A function to execute if the request fails.&lt;/div&gt;&lt;/li&gt;
-     * &lt;li&gt;&lt;b&gt;callback&lt;/b&gt; : Function (Optional) &lt;div class=&quot;sub-desc&quot;&gt;A function to execute when the request 
+     * &lt;li&gt;&lt;b&gt;callback&lt;/b&gt; : Function (Optional) &lt;div class=&quot;sub-desc&quot;&gt;A function to execute when the request
      * completes, whether it is a success or failure.&lt;/div&gt;&lt;/li&gt;
      * &lt;li&gt;&lt;b&gt;scope&lt;/b&gt; : Object (Optional)&lt;div class=&quot;sub-desc&quot;&gt;The scope in
      * which to execute the callbacks: The &quot;this&quot; object for the callback function. Defaults to the browser window.&lt;/div&gt;&lt;/li&gt;
@@ -72,32 +93,33 @@ Ext.define('Ext.data.JsonP', {
      */
     request: function(options){
         options = Ext.apply({}, options);
-       
+
         //&lt;debug&gt;
         if (!options.url) {
             Ext.Error.raise('A url must be specified for a JSONP request.');
         }
         //&lt;/debug&gt;
-        
-        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 &gt; 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;
     },
-    
-<span id='Ext-data.JsonP-method-abort'>    /**
+
+<span id='Ext-data-JsonP-method-abort'>    /**
 </span>     * 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', {
             }
         }
     },
-    
-<span id='Ext-data.JsonP-method-setupErrorHandling'>    /**
+
+<span id='Ext-data-JsonP-method-setupErrorHandling'>    /**
 </span>     * 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]);
     },
-    
-<span id='Ext-data.JsonP-method-handleAbort'>    /**
+
+<span id='Ext-data-JsonP-method-handleAbort'>    /**
 </span>     * 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);
     },
-    
-<span id='Ext-data.JsonP-method-handleError'>    /**
+
+<span id='Ext-data-JsonP-method-handleError'>    /**
 </span>     * 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);
     },
-<span id='Ext-data.JsonP-method-cleanupErrorHandling'>    /**
+
+<span id='Ext-data-JsonP-method-cleanupErrorHandling'>    /**
 </span>     * 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;
     },
-<span id='Ext-data.JsonP-method-handleTimeout'>    /**
+
+<span id='Ext-data-JsonP-method-handleTimeout'>    /**
 </span>     * 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);
     },
-<span id='Ext-data.JsonP-method-handleResponse'>    /**
+
+<span id='Ext-data-JsonP-method-handleResponse'>    /**
 </span>     * 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]);
     },
-    
-<span id='Ext-data.JsonP-method-createScript'>    /**
+
+<span id='Ext-data-JsonP-method-createScript'>    /**
 </span>     * Create the script tag
      * @private
      * @param {String} url The url of the request
@@ -232,4 +254,6 @@ Ext.define('Ext.data.JsonP', {
         return script;
     }
 });
-</pre></pre></body></html>
\ No newline at end of file
+</pre>
+</body>
+</html>