2

Backbone.js を初めて試しています。私は Django を初めて使用するわけではないので、Django アプリへのバックボーンを利用したフロントエンドを構築しようとしています。いくつかの調査の後、Tastypie がおそらく最も簡単であると判断しました。

多くの論争の後、私はこの問題を抱えています。オブジェクトを作成することはできますが、オブジェクトを取得することはできません。

だから私はこれを行うことができます:

var foo = new LabSite()
var newInfo={name:"Mine",site_code:"FRED"}
foo.save(newInfo)

ID が 1 の「Mine」という名前の新しい LabSite が admin に表示されます。

これを試すと:

var bar = new LabSite({id:1})

bar.fetch({
    success: function (bar) {
        alert(bar.toJSON());
    }
})

アラートが表示されません。

引き返すオブジェクトでは、応答として次のようになります。

responseText: "callback({"id": "1", "name": "Mine", "resource_uri": "/api/v1/labsite/1/","site_code": "FRED"})"

返されたので、値はありません。たぶん、何かが応答を理解していませんか?

この backbone-tastypie プロジェクトを使用してみましたが、何も変わりませんでした: https://github.com/amccloud/backbone-tastypie

私の ModelResource はとてもシンプルです:

class LabSiteResource(ModelResource):

    def determine_format(self, request):
       return  'text/javascript'

    class Meta:
       queryset = LabSite.objects.all()
       authorization= Authorization()

そして、私が見に行くとhttp://localhost:8000/api/v1/labsite/1/

   callback({"id": "1", "name": "Mine", "resource_uri": "/api/v1/labsite/1/", "site_code": "FRED"})

なぜ私は何もフェッチできないのですか?

EDIT以下のコメントに基づいて、エラーをキャッチしようとしました。

  var errorInfo = {};
  var bar = new LabSite({id:1})
  bar.fetch({
      success: function (bar) {
        alert(bar.toJSON());
      },
  error: function(a1,a2,a3) {
      errorInfo=[a1,a2,a3]

   }
   });

errorInfo多くの有用な情報を提供しませんでした-これはそれが何であったかです:

    > errorInfo[0]
    d
    _escapedAttributes: Object
    _pending: Object
    _previousAttributes: Object
    _silent: Object
    attributes: Object
    changed: Object
    cid: "c1"
    id: 1
    __proto__: x
    > errorInfo[1]
    [...]
    readyState: 4
    responseText: "callback({"id": "1", "name": "Mine", "resource_uri": "/api/v1/labsite/1/", "site_code": "FRED"})"
    setRequestHeader: function (a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this}
    state: function (){return c}
    status: 200
    statusCode: function (a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this}
    statusText: "OK"
    [....]
    > errorInfo[2]
    Object
    error: function (d,e){e=d===b?e:d;a?a(b,e,c):b.trigger("error",b,e,c)}
    success: function (d,e,f){if(!b.set(b.parse(d,f),a))return!1;c&&c(b,d)}
    __proto__: Object

errorInfo[1].status、通信が完全に検出されerrorInfo[1].responseText、正しいデータであることを示しているようです。今まで以上に混乱しているかもしれません。

4

1 に答える 1

1

callback関数にラップされたフェッチ応答 JSON 。jsonpですか?バックボーンは純粋な JSON を想定しています。

于 2012-10-24T15:30:59.697 に答える