Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // jsonp.js
- //
- // for using jsonp - it dynamically generates and injects script tags for
- // JSONP requests.
- //
- // Tue, 28 Feb 2012 09:45
- //
- (function(globalContext) {
- // "Static" script ID counter
- var scriptTagCounter = 1, head;
- function invokeJsonp(fullUrl, cacheOk) {
- var c = cacheOk || true; // false ... default
- script = buildScriptTag(fullUrl, c);
- if (typeof head != 'object') {
- head = document.getElementsByTagName("head").item(0);
- }
- head.appendChild(script);
- return script;
- }
- function removeTag(tag) {
- if (typeof head != 'object') {
- head = document.getElementsByTagName("head").item(0);
- }
- head.removeChild(script);
- }
- function buildScriptTag(url, cacheOk) {
- // Create the script tag
- var element = document.createElement("script"),
- additionalQueryParams, conjunction,
- actualUrl = url,
- elementId = 'jsonp-script-' + scriptTagCounter++;
- if (!cacheOk) {
- additionalQueryParams = '_=' + (new Date()).getTime();
- conjunction = (url.indexOf('?') == -1) ? '?' : '&';
- actualUrl = url + conjunction + additionalQueryParams;
- }
- // Set attributes on the script element
- element.setAttribute("type", "text/javascript");
- element.setAttribute("src", actualUrl);
- element.setAttribute("id", elementId);
- return element;
- }
- globalContext.Jsonp = {invoke : invokeJsonp, removeTag: removeTag};
- }(this));
- // example usage:
- //
- // var scr1;
- //
- // function cbFunc(data) {
- // // This is a jsonp callback. It gets invoked when the
- // // injected script tag gets executed by the browser.
- // if (data === null) { return; }
- // populateSelect(data.names, s3);
- // Jsonp.removeTag(scr1);
- // }
- //
- // function retrieveChildNames(geonameId, cbName) {
- // var restUrl = 'http://api.example.com/children/187/alpha?cb=cbFunc';
- // scr1 = Jsonp.invoke(restUrl);
- // }
- //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement