Prototype JSONPRequest Objekt

Posted by & filed under javascript.

Es ist ja anscheinend gerade „in“, etwas über JSONP zu berichten. Nun ja, ich dachte eigentlich, so etwas ist kaum der Rede wert, aber wenn jQuery mit der Methode getJSON etwas anbietet, was Prototype noch nicht kann, muss ich wohl diesen kleinen Codeschnipsel, der mal so bei einem Experiment mit Twitter nebenbei entstanden ist, auch mal veröffentlichen
:

/**
 * @author michael jostmeyer
 * @link http://michael.josi.de
 */
var JSONPRequest = Class.create({
  initialize : function (options) {
    this.options = Object.extend({
      cbParamName : 'callback',
      tempFncContainer : 'tmpfnc'
    },options || { });
    if(!window[this.options.tempFncContainer]){
      window[this.options.tempFncContainer] = [];
    }
  },
  get : function (url, cb){
    this.scriptElement = document.createElement('script');
    var tmpln = window[this.options.tempFncContainer].length;
    window[this.options.tempFncContainer][tmpln] = cb;
    this.scriptElement.setAttribute('src', url+'?'+this.options.cbParamName+'='+this.options.tempFncContainer+"["+tmpln+"]");
    document.body.appendChild(this.scriptElement);
  }
});

Kleine Beispielanwendung, holt von Twitter die letzten Tweets von „username“:

new JSONPRequest().get('http://twitter.com/statuses/user_timeline/username.json',function(o){console.log(o);});
// Natürlich müsst ihr "username" durch einen echten Benutzernamen ersetzen 😉
// => [Object object]

Viel Spass damit!

Leave a Reply