SwVitaliy

Untitled

Jul 22nd, 2012
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function xdrJsonp(url, a, b){
  2.         var options, fn;
  3.         if (typeof a === 'function') {
  4.             fn = a; options = {};
  5.         } else if (typeof a === 'object' && a.constructor.toString().slice(9, 17) === "Object()") {
  6.             options = a;
  7.             if (typeof b !== 'function') {
  8.                 throw Error("xdrJsonp: jsonp callback expected!!!");
  9.             }
  10.             fn = b;
  11.         } else {
  12.             throw Error("xdrJsonp: illegal arguments!!!");
  13.         }
  14.  
  15.         var proxy = options.proxy || xdrJsonp.PROXY;
  16.         var format = options.format || "json";
  17.  
  18.         var call = "call_"+ (new Date).getTime().toString().slice(0,-3)+Math.random().toString().replace(/\./g,"");
  19.         var headID = document.getElementsByTagName("head")[0];
  20.         var script = document.createElement('script');
  21.  
  22.         script.id = call;
  23.         script.type = 'text/javascript';
  24.  
  25.         xdrJsonp.callbacks[script.id] = fn;
  26.  
  27.         var query = {
  28.            "url": url, "format":format, "callback":"xdrJsonp.invokeById('"+script.id+"')"
  29.         };
  30.  
  31.         var temp = [];
  32.         for (var i in query) temp.push(i + '=' + encodeURIComponent(query[i]));
  33.  
  34.         script.src = proxy + '?' + temp.join('&');
  35.         headID.appendChild(script);
  36. }
  37. xdrJsonp.PROXY = "http://127.0.0.1:8898/";
  38. xdrJsonp.callbacks = {};
  39. xdrJsonp.invokeById = function(id){
  40.         var e = document.getElementById(id);
  41.         var t = xdrJsonp.callbacks[id];
  42.         e.parentNode.removeChild(e);
  43.         delete xdrJsonp.callbacks[id];
  44.         return t;
  45. };
Advertisement
Add Comment
Please, Sign In to add comment