我对骨干网很新,它是如何工作的,并继承了一堆代码,但我根本无法解决这个问题:
我有一个用户模型:
var User = Backbone.Model.extend({
idAttribute: 'username',
defaults: {
username: "",
email: "",
roles : [],
password: ""
}
});
var Users = Backbone.Collection.extend({
model: User,
initialize: function(args, options) {
if (options && options.dialog) {
this.dialog = options.dialog;
}
},
parse: function(response) {
if (this.dialog) {
this.dialog.populate(response);
}
return response;
},
url: function() {
var segment = AdminUrl + "/users";
return segment;
}
});
然后在我看来我正在做的其他地方:
user.save({username: $newtarget.val()},null);
或 user.save();
PUT被触发到正确的URL,但每次触发它都会发送数据
Content-Type application/x-www-form-urlencoded; charset=UTF-8
但我的Jersey端点接受application / json
我读到的每个地方人们都在努力设置urlencoded数据,但我的问题是反过来的!
参数作为url params发送:
username=admin&email=&password=admin&roles%5B%5D=ROLE_USER&roles%5B%5D=ROLE_ADMIN&id=1
=== EDIT ===
如果我强制使用内容类型和数据:
user.save({}, {data: JSON.stringify(user.attributes),contentType: "application/json"});
看跌期权很好,很奇怪。
答案 0 :(得分:1)
Backbone.emulateJSON = false;
是true
来自文档
启用emulateJSON以支持无法处理的旧服务器 直接应用/ json请求...将身体编码为 application / x-www-form-urlencoded而不是将模型发送到 形成param命名模型。