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

バックボーンは、サーバーの応答が JSON であることを期待しています。Model.parseXML を解析してプレーンな 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 に答える