Javascript 在到达主干集合中的json解析器之前编辑/提取数据

Javascript 在到达主干集合中的json解析器之前编辑/提取数据,javascript,json,backbone.js,collections,Javascript,Json,Backbone.js,Collections,我制作了一个主干集合,用于从以下位置操作Boards对象: var BoardsCollection = Backbone.Collection.extend({ model: Board, url: 'https://api.4chan.org/boards.json', sync: function(method, model, options){ options.timeout = 10000; options.data

我制作了一个主干集合,用于从以下位置操作Boards对象:

var BoardsCollection = Backbone.Collection.extend({
    model: Board,   
    url: 'https://api.4chan.org/boards.json',
    sync: function(method, model, options){  
        options.timeout = 10000;  
        options.dataType = "jsonp"; 
        options.crossDomain = true; 
        return Backbone.sync(method, model, options);   
    }

});
return new BoardsCollection();
{"boards":    
    [{"board":"3","title":"3DCG","ws_board":1,"per_page":15,"pages":11},
     {"board":"a","title":"Anime \u0026 Manga","ws_board":1,"per_page":15,"pages":11}]
由于跨域错误,我发出了一个JSONP请求以使其工作,但4chan响应的JSON如下所示:

var BoardsCollection = Backbone.Collection.extend({
    model: Board,   
    url: 'https://api.4chan.org/boards.json',
    sync: function(method, model, options){  
        options.timeout = 10000;  
        options.dataType = "jsonp"; 
        options.crossDomain = true; 
        return Backbone.sync(method, model, options);   
    }

});
return new BoardsCollection();
{"boards":    
    [{"board":"3","title":"3DCG","ws_board":1,"per_page":15,"pages":11},
     {"board":"a","title":"Anime \u0026 Manga","ws_board":1,"per_page":15,"pages":11}]
不是有效的JSONP,因为boards项和主干的解析器失败,错误为意外字符:

因此,我需要一种方法来编辑服务器的响应,从键盘中提取值,并将其传递给集合进行解析

顺便说一句,我在node.js中创建了一个小服务器,它从4chan获取json,提取boards的值并返回它,这样集合就可以正常工作了。但是我会用它来制作一个jquery移动应用程序,所以我需要连接到真正的4ChanAPI


谢谢。

问题不在于json格式,而在于它只是json,而不是jsonp。Jsonp是通过标记加载的,所以它需要是一个正确的javascript代码,它应该像回调{data:'data'}

在您的情况下,您需要设置一个服务器来代理对4chan api的请求。如果在同一个域上运行它,则可以使用简单的XmlHttpRequests。boards top level key的问题通过collection的解析函数解决:

parse: function (response) {
    return response.boards;
}

如果没有node.js或php这样的代理,就无法完成此任务