Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 1x 1x 1x 1x 2x 2x 2x 2x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 1x 1x 1x 2x 1x 1x | /**
* jsonp
*/
import {buildURL} from "../../utils/url";
import {objClone, objCover} from "../../utils/objectOpt";
// default ajax params
const defaultOptions = {
url: '',
data: null,
dataType: 'json',
jsonp: 'callback',
success: new Function,
error: new Function,
};
//
let jsonpCounter = 100;
export default function ajaxJsonp(config) {
// init options
let options = objCover(objClone(defaultOptions), config);
// create receive func
let jsonpCallbackName = 'jsonp_cb' + jsonpCounter++;
let called = false;
window[jsonpCallbackName] = function (data) {
called = true;
options.success(data);
};
// script tag
let pageScript = document.createElement('script');
pageScript.type = 'text/javascript';
let params = objClone(options.data);
params[options.jsonp] = jsonpCallbackName;
params["_"] = +new Date();
pageScript.src = buildURL({
url: options.url,
params: params
});
document.head.appendChild(pageScript);
pageScript.onload = function () {
Iif (called == false) {
options.error({
message: 'Jsonp response illegal',
});
}
delete window[jsonpCallbackName];
document.head.removeChild(pageScript);
};
pageScript.onerror = function () {
options.error({
message: 'Jsonp request error',
});
document.head.removeChild(pageScript);
};
};
|