Upgrade to ExtJS 3.2.0 - Released 03/30/2010
[extjs.git] / docs / source / jsonp.html
diff --git a/docs/source/jsonp.html b/docs/source/jsonp.html
new file mode 100644 (file)
index 0000000..a787b3b
--- /dev/null
@@ -0,0 +1,88 @@
+<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>
+</head>
+<body  onload="prettyPrint();">
+    <pre class="prettyprint lang-js">/*!
+ * Ext JS Library 3.2.0
+ * Copyright(c) 2006-2010 Ext JS, Inc.
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+Ext.ns('Ext.ux');
+
+Ext.ux.JSONP = (function(){
+    var _queue = [],
+        _current = null,
+        _nextRequest = function() {
+            _current = null;
+            if(_queue.length) {
+                _current = _queue.shift();
+                       _current.script.src = _current.url + '?' + _current.params;
+                       document.getElementsByTagName('head')[0].appendChild(_current.script);
+            }
+        };
+
+    return {
+        request: function(url, o) {
+            if(!url) {
+                return;
+            }
+            var me = this;
+
+            o.params = o.params || {};
+            if(o.callbackKey) {
+                o.params[o.callbackKey] = 'Ext.ux.JSONP.callback';
+            }
+            var params = Ext.urlEncode(o.params);
+
+            var script = document.createElement('script');
+                       script.type = 'text/javascript';
+
+            if(o.isRawJSON) {
+                if(Ext.isIE) {
+                    Ext.fly(script).on('readystatechange', function() {
+                        if(script.readyState == 'complete') {
+                            var data = script.innerHTML;
+                            if(data.length) {
+                                me.callback(Ext.decode(data));
+                            }
+                        }
+                    });
+                }
+                else {
+                     Ext.fly(script).on('load', function() {
+                        var data = script.innerHTML;
+                        if(data.length) {
+                            me.callback(Ext.decode(data));
+                        }
+                    });
+                }
+            }
+
+            _queue.push({
+                url: url,
+                script: script,
+                callback: o.callback || function(){},
+                scope: o.scope || window,
+                params: params || null
+            });
+
+            if(!_current) {
+                _nextRequest();
+            }
+        },
+
+        callback: function(json) {
+            _current.callback.apply(_current.scope, [json]);
+            Ext.fly(_current.script).removeAllListeners();
+            document.getElementsByTagName('head')[0].removeChild(_current.script);
+            _nextRequest();
+        }
+    }
+})();</pre>    
+</body>
+</html>
\ No newline at end of file