我第一次尝试Backbone.js。我不是Django的新手,所以我正在尝试为Django应用程序构建一个Backbone驱动的前端。经过一些研究,我认为Tastypie可能是最容易去的。
经过多次争吵后,我遇到了这个问题:我可以很好地创建对象,但是我无法获取它们中的任何一个。所以我可以这样做:
var foo = new LabSite()
var newInfo={name:"Mine",site_code:"FRED"}
foo.save(newInfo)
我可以在名为“我的”的管理员中看到一个ID为1的新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
是正确的数据。我现在可能比以前更困惑了。
答案 0 :(得分:1)
您的fetch响应JSON包含在callback
函数中。是jsonp吗? Backbone期望纯JSON。