Categorized | javascript

Prototype JSONPRequest Objekt

Posted on 24 February 2009 by michael

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

Photos from our Flickr stream

See all photos

josi_de@twitter

GitHub Projects