0
myBook = Backbone.Collection.extend({
    initialize: function(models, geturl) {
        var self = this;
        this.url = geturl;
        this.fetch({
            dataType: "xml",
            async: false,
            success: function(collection, xml) {
                ...
                ...
                ...
            }
        });
    }
});

我不能让它工作。任何人都请建议我解决这个问题。我真的需要从集合中调用 XML。我尝试使用 $.ajax() 但失败了,所以我尝试使用backbone.js 函数来获取XML,但不幸的是我无法让它工作。

我正在使用:- Backbone.js 0.9.2 & jQuery v1.8.3

谢谢你。

4

1 回答 1

0

Backbone 期望服务器响应为 JSON。Model.parse您应该使用解析 XML 并返回纯 Javascript 对象的函数来覆盖。jQuery.parseXML对于将简单的 XML 映射到对象非常方便。

假设您的 XML 响应如下所示:

<root>
  <id>1</id>
  <foo bar="foobar">foo</foo>
</root>

您希望模型属性看起来像:

{
  id:1,
  foo:'foo',
  foobar:'foobar'
}

您可以按如下方式解析它:

var YourModel = Backbone.Model.extend({
  parse: function(xml) {
    var $xml = $.parseXML(xml);
    return {
      id:      parseInt($xml.find('id').text(), 10),
      foo:     $xml.find('foo').text(),
      foobar:  $xml.find('foo').attr('bar')
    }
  }  
});
于 2013-03-04T12:40:41.683 回答