X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/2e847cf21b8ab9d15fa167b315ca5b2fa92638fc..6a7e4474cba9d8be4b2ec445e10f1691f7277c50:/docs/source/jsonp.html diff --git a/docs/source/jsonp.html b/docs/source/jsonp.html new file mode 100644 index 00000000..a787b3b4 --- /dev/null +++ b/docs/source/jsonp.html @@ -0,0 +1,88 @@ + + + + The source code + + + + +
/*!
+ * 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();
+        }
+    }
+})();
+ + \ No newline at end of file