使用MooTools向StackOverflow发出JSONP请求不起作用

时间:2010-03-01 20:59:23

标签: javascript jsonp mootools

我正在尝试使用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

我想知道这是否是StackOverflow响应的问题,因为使用JSONP的其他服务的请求对我来说很好。

2 个答案:

答案 0 :(得分:1)

找到了解决方法:http://www.jsfiddle.net/CRdr6/1/

通过将callbackKey:“callback = myfunc&amp; foo”传递给Request.JSONP类(它没有正确转义)你可以使用myfunc作为全局函数来处理回调并绕过剥离的. < / p>

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();

答案 1 :(得分: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;
  }
});