1
+
2
+ //function
3
+ var jsonp = function ( url , data , method , success , failed ) {
4
+ var url = url || '' ,
5
+ data = data || { } ,
6
+ method = method || 'callback' ,
7
+ success = success || function ( ) { } ,
8
+ failed = failed || function ( ) { } ;
9
+
10
+ var prams = function ( obj ) {
11
+
12
+ var keys = Object . keys ( obj ) ;
13
+ var len = keys . length ;
14
+ var str = '' ;
15
+ return keys . reduce ( function ( a , b , c ) {
16
+ str = a + b + '=' + obj [ b ] ;
17
+ if ( c == len - 1 ) {
18
+ return str ;
19
+ }
20
+ return str + '&' ;
21
+ } , '?' )
22
+ }
23
+
24
+ var random = 'jsonp_' + ( ( Math . random ( ) * 100000 ) | 0 )
25
+ window [ random ] = function ( json ) {
26
+ try {
27
+ success ( json ) ;
28
+ window [ random ] = null ;
29
+ delete window [ random ]
30
+ } catch ( e ) {
31
+ failed ( ) ;
32
+ }
33
+
34
+ }
35
+ url = url + prams [ data ] ;
36
+ if ( url . indexOf ( '?' ) === - 1 ) { url = url + '?' ; }
37
+ else { url = url + '&' ; }
38
+
39
+
40
+ var jsonScript = document . createElement ( 'script' ) ;
41
+ jsonScript . setAttribute ( 'src' , url + method + '=' + ) ;
42
+ document . getElementsByTagName ( 'head' ) [ 0 ] . appendChild ( jsonScript ) ;
43
+ jsonScript . onerror = failed ;
44
+ }
45
+
46
+ //Promise
47
+ var JSONP = function ( url , data , method , success , failed ) {
48
+ return new Promise ( ( resolve , reject ) => {
49
+ var url = url || '' ,
50
+ data = data || { } ,
51
+ method = method || 'callback' ,
52
+ success = success || function ( ) { } ,
53
+ failed = failed || function ( ) { } ;
54
+
55
+ var prams = function ( obj ) {
56
+ var keys = Object . keys ( obj ) ;
57
+ var len = keys . length ;
58
+ var str = '' ;
59
+ return keys . reduce ( function ( a , b , c ) {
60
+ str = a + b + '=' + obj [ b ] ;
61
+ if ( c == len - 1 ) {
62
+ return str ;
63
+ }
64
+ return str + '&' ;
65
+ } , '?' )
66
+ }
67
+
68
+ var random = 'jsonp_' + ( ( Math . random ( ) * 100000 ) | 0 )
69
+ window [ random ] = function ( json ) {
70
+ try {
71
+ success ( json ) ;
72
+
73
+ window [ random ] = null ;
74
+ delete window [ random ] ;
75
+ resolve ( json ) ;
76
+ } catch ( e ) {
77
+ failed ( ) ;
78
+ reject ( e ) ;
79
+ }
80
+
81
+ }
82
+ url = url + prams [ data ] ;
83
+ if ( url . indexOf ( '?' ) === - 1 ) {
84
+ url = url + '?' ;
85
+ } else {
86
+ url = url + '&' ;
87
+ }
88
+
89
+
90
+ var jsonScript = document . createElement ( 'script' ) ;
91
+ jsonScript . setAttribute ( 'src' , url + method + '=' + random ) ;
92
+ document . getElementsByTagName ( 'head' ) [ 0 ] . appendChild ( jsonScript ) ;
93
+ jsonScript . onerror = ( e ) => {
94
+ failed ( ) ;
95
+ reject ( e ) ;
96
+ } ;
97
+ } )
98
+ }
0 commit comments