0

JSONPとMooToolsを使用してカスタムStackOverflowバッジを作成しようとしています。コードは次のとおりです。

new Request.JSONP('http://stackoverflow.com/users/flair/166325.json', {
  onComplete: function(data) {
    console.log(data);
  }
}).request();

しかし、私はいつもこのメッセージを返します:

RequestJSONPrequest_maprequest_0 is not defined

JSONPを使用した他のサービスへのリクエストは問題なく機能するため、これがStackOverflowからの応答の問題であるかどうか疑問に思っています。

4

2 に答える 2

1

それを回避する方法を見つけました:http ://www.jsfiddle.net/CRdr6/1/

callbackKey: "callback = myfunc&foo"をRequest.JSONPクラスに渡すことで(適切にエスケープされません)、myfuncをグローバル関数として使用して、コールバックを処理し、削除されたものを回避できます。.

Request.stackoverflow = new Class({
    Extends: Request.JSONP,
    options: {
        log: true,
        url: "http://stackoverflow.com/users/flair/{user}.json",
        callbackKey: "callback=myfunc&foo"
    },
    initialize: function(user, options) {
        this.parent(options);
        this.options.url = this.options.url.substitute({user: user});
    },
    success: function(data, script) {
        this.parent(data, script);
    }
});


window.myfunc = function(data) {
    console.log(data);
};

new Request.stackoverflow(166325).send();
于 2010-03-01T21:32:35.003 に答える
0

StackOverflowが(ドットなしで)呼び出す関数を作成することになりました:

var StackOverflow = Class.refactor(JsonP, {
  getScript: function(options) {
    var index = Request.JSONP.counter;
    var script = this.previous(options);
    eval("RequestJSONPrequest_maprequest_" + index + " = Request.JSONP.request_map['request_' + index];");
    return script;
  }
});
于 2010-03-02T04:51:05.997 に答える