30 lines
989 B
JavaScript
30 lines
989 B
JavaScript
goog.provide('ol.net.Jsonp');
|
|
|
|
|
|
/**
|
|
* @param {string} url Request url. A 'callback' query parameter will be
|
|
* appended.
|
|
* @param {Function} callback Callback on success.
|
|
* @param {function()=} opt_errback Callback on error.
|
|
* @param {string=} opt_callbackParam Callback parameter. Default is 'callback'.
|
|
*/
|
|
ol.net.Jsonp = function(url, callback, opt_errback, opt_callbackParam) {
|
|
var script = goog.global.document.createElement('script');
|
|
script.async = true;
|
|
var key = 'ol_callback_' + goog.getUid(callback);
|
|
script.src = url + (url.indexOf('?') == -1 ? '?' : '&') +
|
|
(opt_callbackParam || 'callback') + '=' + key;
|
|
var timer = goog.global.setTimeout(function() {
|
|
delete goog.global[key];
|
|
if (opt_errback) {
|
|
opt_errback();
|
|
}
|
|
}, 10000);
|
|
goog.global[key] = function(data) {
|
|
goog.global.clearTimeout(timer);
|
|
delete goog.global[key];
|
|
callback(data);
|
|
};
|
|
goog.global.document.getElementsByTagName('head')[0].appendChild(script);
|
|
};
|