我第一次嘗試了Backbone.js。我對Django並不陌生,所以我正在嘗試爲Django應用程序構建一個Backbone驅動的前端。經過一番研究,我決定Tastypie可能是最容易去的。骨幹可以創建對象,但不能獲取它們
經過多次爭論,我有這個問題:我可以創建對象就好,但我無法獲取它們中的任何一個。
所以我可以這樣做:
var foo = new LabSite()
var newInfo={name:"Mine",site_code:"FRED"}
foo.save(newInfo)
而且我可以看到一個名爲「礦」與1
的ID管理新LabSite當我試試這個:
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"})"
所以被退回,該值是不存在的。也許有些東西不理解迴應?
我試圖用這個主心骨,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"})
任何想法,爲什麼我不能獲取任何東西?
編輯基於下面的評論,我試圖捕捉錯誤。
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
是正確的數據。我現在可能比以前更加困惑。
你可以嘗試把錯誤回調放在提取中,看看它是否在回調中?如果是,請檢查參數。它可能有幫助。 – Cyclone
我把我的錯誤處理上面的結果。 – MikeHoss