source:
trunk/workshop-routing-foss4g/web/ext/src/ext-core/examples/jsonp/jsonp.js
@
76
Revision 76, 2.3 KB checked in by djay, 12 years ago (diff) | |
---|---|
|
Rev | Line | |
---|---|---|
[76] | 1 | /*! |
2 | * Ext JS Library 3.4.0 | |
3 | * Copyright(c) 2006-2011 Sencha Inc. | |
4 | * licensing@sencha.com | |
5 | * http://www.sencha.com/license | |
6 | */ | |
7 | Ext.ns('Ext.ux'); | |
8 | ||
9 | Ext.ux.JSONP = (function(){ | |
10 | var _queue = [], | |
11 | _current = null, | |
12 | _nextRequest = function() { | |
13 | _current = null; | |
14 | if(_queue.length) { | |
15 | _current = _queue.shift(); | |
16 | _current.script.src = _current.url + '?' + _current.params; | |
17 | document.getElementsByTagName('head')[0].appendChild(_current.script); | |
18 | } | |
19 | }; | |
20 | ||
21 | return { | |
22 | request: function(url, o) { | |
23 | if(!url) { | |
24 | return; | |
25 | } | |
26 | var me = this; | |
27 | ||
28 | o.params = o.params || {}; | |
29 | if(o.callbackKey) { | |
30 | o.params[o.callbackKey] = 'Ext.ux.JSONP.callback'; | |
31 | } | |
32 | var params = Ext.urlEncode(o.params); | |
33 | ||
34 | var script = document.createElement('script'); | |
35 | script.type = 'text/javascript'; | |
36 | ||
37 | if(o.isRawJSON) { | |
38 | if(Ext.isIE) { | |
39 | Ext.fly(script).on('readystatechange', function() { | |
40 | if(script.readyState == 'complete') { | |
41 | var data = script.innerHTML; | |
42 | if(data.length) { | |
43 | me.callback(Ext.decode(data)); | |
44 | } | |
45 | } | |
46 | }); | |
47 | } | |
48 | else { | |
49 | Ext.fly(script).on('load', function() { | |
50 | var data = script.innerHTML; | |
51 | if(data.length) { | |
52 | me.callback(Ext.decode(data)); | |
53 | } | |
54 | }); | |
55 | } | |
56 | } | |
57 | ||
58 | _queue.push({ | |
59 | url: url, | |
60 | script: script, | |
61 | callback: o.callback || function(){}, | |
62 | scope: o.scope || window, | |
63 | params: params || null | |
64 | }); | |
65 | ||
66 | if(!_current) { | |
67 | _nextRequest(); | |
68 | } | |
69 | }, | |
70 | ||
71 | callback: function(json) { | |
72 | _current.callback.apply(_current.scope, [json]); | |
73 | Ext.fly(_current.script).removeAllListeners(); | |
74 | document.getElementsByTagName('head')[0].removeChild(_current.script); | |
75 | _nextRequest(); | |
76 | } | |
77 | } | |
78 | })(); |
Note: See TracBrowser
for help on using the repository browser.