というわけで、添削おじさん登場。

[を] 笑い顔顔文字APIを作りました
(なお、なぜか IE と Safari だと一回しか動きません。添削希望!)

理由は単純で、IEとSafariはJSONPをキャッシュしてしまうのです。

理由がわかれば、解決法も簡単です。たとえば以下のようにしてURIをUniqueにしちゃえばOK.

function WarosuJSON(cb){
  this.proxy = 'http://mimitako.net/api/warosuapi.cgi';
  this.cb    = cb;
  this.count = 0;
  this.parse = function(cb){
    var script = document.createElement('script'); 
    script.id = this.proxy + '?format=json' + '&callback=' + this.cb
                + '&count=' + this.count++;
    script.charset = 'UTF-8';
    script.src = script.id; 
    document.lastChild.appendChild(script);
    // document.removeChild(script); // SafariがDOM Exceptionになるので削除
  };
  return this;
}

あと、サーバー側ですが、__DATA__の利用は避ける癖をつけた方がよいでしょう。mod_perlで動かないので(これ、個人的にはmod_perlで一番悲しいことだったりする)。

Dan the Ajax Monger