我是Backbone.js的新手,我正在尝试保存模型实例.
我正在使用django作为我的服务器.
客户端代码:
var Song = Backbone.Model.extend({
defaults: {
name: 'New Song'
},url: function() {
return window.location.href;
}
});
var song = new Song()
song.save()
在发送数据之前正确设置了csrfmiddlewaretoken.
我逐步完成了内部调用的jQuery $.ajax函数
Backbone.sync并发现模型对象包含正确的数据.
但是,服务器收到的request.POST是
POST:
而不是实际的数据.知道我哪里错了吗?
更新:我通过将Backbone.emulateJSON设置为true来快速修复.但根据Backbone(0.9.2)代码中的注释,它适用于传统服务器.我正在使用Django 1.4.1.是不是意味着django 1.4.1不兼容?
更新2:当我将Backbone.emulateJSON设置为false时,我在firefox中收到以下错误,但它在chrome中无声地失败.
"[Exception... "Component returned failure code: 0x80460001
(NS_ERROR_CANNOT_CONVERT_DATA)" nsresult: "0x80460001 (NS_ERROR_CANNOT_CONVERT_DATA)"
location: "JS frame :: http://localhost:8000/static/jquery.js ::
我正在使用jQuery作为Backbone首选的ajax,似乎错误可能在jQuery中.
更新3:我通过覆盖Backbone.sync使用的$.ajax来解决它.它仍然是一个快速解决方案.
Backbone.js版本:0.9.2
jQuery版本:1.8.0.也试过1.7.2.结果相同.
另外,设置Backbone.emulateJSON = true的原因;工作是因为然后Backbone通过“遗留”机制将JSON发送到Django,这使得它出现在request.POST QueryDict中.
原文地址:https://www.jb51.cc/jquery/428627.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。