Skip to content

Commit bfa8c8f

Browse files
committed
add a simple jsonp function
增加一个jsonp的方法使用
1 parent 3522ec2 commit bfa8c8f

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

ajax(over)/jsonp.js

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
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

Comments
 (0)