javascript - 在访问 Backbone 集合中的 json 解析器之前编辑/提取数据

标签 javascript json backbone.js collections

我创建了一个 Backbone Collection 来操作 4chan API 中的 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();

由于跨域错误,我发出了 JSONP 请求以使其工作,但 4chan 响应的 JSON 如下:

{"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}]

由于“boards”项和主干解析器失败,因此不是有效的 JSONP,并出现错误“意外字符:”。

所以我需要一种方法来编辑服务器的响应,从关键“板”中提取值并将其传递给集合进行解析。

作为旁注,我在 node.js 中创建了一个小服务器,它从 4chan 获取 json 并提取板的值并将其返回,使用它集合工作得很好。但我将使用它来制作一个 jquery 移动应用程序,因此我需要连接到真正的 4chan API。

谢谢。

最佳答案

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

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

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

关于javascript - 在访问 Backbone 集合中的 json 解析器之前编辑/提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19191008/

相关文章:

javascript - Polymer 计算属性上的空值

javascript - Jquery:在动态添加的输入控件上未触发 Keyup 事件

javascript - 如何将帖子分享到 linkedin

php - 如何在 PHPUnit/Laravel 中模拟 JSON 文件

backbone.js - Backgrid 格式化程序从其他列添加值

javascript - 有没有办法将代码附加到 asp.mvc 部分

json - 如何从 SpringBoot Controller 中的 Flux<String> 获取 JSON 格式?

ruby-on-rails - Rails 是否创建了新的参数[:model] hash?

javascript - Backbone.js - 自定义从 "fetch()"返回的数据的组织

javascript - 如何在 JavaScript 中添加第二个属性?