【问题标题】:How to get json with backbone.js如何使用backbone.js 获取json
【发布时间】:2013-08-30 18:16:35
【问题描述】:

我正在尝试使用backbones.js fetch 从推特搜索中获取json

下面的代码有人能告诉我哪里出错了吗?

(function($){

  var Item = Backbone.Model.extend();

  var List = Backbone.Collection.extend({
    model: Item,
    url:"http://search.twitter.com/search.json?q=blue%20angels&rpp=5&include_entities=true&result_type=mixed"
  });    

  var ListView = Backbone.View.extend({    
    el: $('#test'),
    events: {
      'click button#add': 'getPost'
    },
    initialize: function(){
      _.bindAll(this, 'render', 'getPost');
      this.collection = new List();
      this.render(); 
    },
    render: function(){
      var self = this;      
      $(this.el).append("<button id='add'>get</button>");
    },
    getPost: function(){
      console.log(this.collection.fetch());
    }

  });

  // **listView instance**: Instantiate main app view.
  var listView = new ListView();      
})(jQuery);​

我刚刚开始使用骨干网,我只想控制台记录 json

您可以在此处查看我的示例。 jsfiddle.net/YnJ9q/2/

【问题讨论】:

    标签: json backbone.js


    【解决方案1】:

    上面有两个问题:

    首先,您需要在 fetch 方法中添加一个成功/失败回调,以便将获取的 JSON 记录到控制台。

    getPost: function(){
        var that = this;
        this.collection.fetch(
        {
            success: function () {
                 console.log(that.collection.toJSON());
            },
            error: function() {
                 console.log('Failed to fetch!');
            }
       });
    }
    

    另一个问题是“same-origin-policy”问题。您可以通过查看this link 了解如何解决该问题。

    更新: 我修改了您的代码并包含了更新的sync 方法。现在可以了! Take a look here!

    基本上,更新您的collection 以包含parsesync 方法,如下所示:

    var List = Backbone.Collection.extend({
        model: Item,
    
        url: "http://search.twitter.com/search.json?q=blue%20angels&rpp=5&include_entities=true&result_type=mixed",
    
        parse: function(response) {
            return response.results;
        },
    
        sync: function(method, model, options) {
            var that = this;
            var params = _.extend({
                type: 'GET',
                dataType: 'jsonp',
                url: that.url,
                processData: false
            }, options);
    
            return $.ajax(params);
        }
    });
    

    【讨论】:

    • 感谢这让我真正难以理解骨干。js 希望它值得最终坚持下去。目前正在尝试点击侧边栏以返回推文
    • 嘿amulya 我不明白的是怎么说我想要一个输入框来在url上运行搜索你如何在jquery中设置变量我会做“search.twitter.com/search.json?q="+query+”“jsfiddle.net/isimpledesign/BHrmC/1我不明白这是如何使用骨干完成的???
    猜你喜欢
    • 2011-11-08
    • 2013-11-30
    • 2013-04-13
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多