我定义了以下Backbone模型:
var User = Backbone.Model.extend({
url: "/login",
contentType: "application/com.example.auth+json",
defaults: {
userName: '',
password: ''
},
validate: function(attrs){
if(!attrs.userName){
return 'Please fill username field.'
}
if(!attrs.password){
return 'Please fill password field.'
}
}
});
我在Backbone.View中使用以下代码
// ...
initialize: function() {
this.model = new User();
myUser = {
userName: 'labuser1@example.com',
password: 'abcd_1234',
};
}
onSubmit: function() {
this.model.save(myUser, {
success: function () {
alert('You are authenticated');
Backbone.trigger('Authenticated', {source: 'LOGIN'});
},
error: function (model, error) {
alert('Error: " + error);
}
});
}
我从后端收到以下响应,没有响应数据只发送状态代码返回:
Request URL : https://server/login
Request Method:POST
Status Code:200 OK
但我正在打印'错误:[对象对象]'。尽管服务器成功验证了用户,但为什么它没有达到成功处理程序。如果需要,请告知如何在前端/后端修复此问题。
答案 0 :(得分:11)
您可以使用此代码dataType: 'text'
来修复它
...
this.model.save(myUser, {
dataType: 'text',
success: function () {
...
或通过将Content-type
标头设置为application/json
来修复服务器端。
答案 1 :(得分:1)
将initialize
更新为:
initialize: function() {
var myUser = {
userName: 'labuser1@example.com',
password: 'abcd_1234',
};
this.model = new User(myUser);
}
您需要在此处初始化model
然后再进入
onSubmit
功能,您可以直接保存它:
onSubmit: function() {
this.model.save(null, {
success: function () {
alert('You are authenticated');
Backbone.trigger('Authenticated', {source: 'LOGIN'});
},
error: function (model, error) {
alert('Error: " + error);
}
});
}
注意:model.save
应该用于创建新模型并在后端保留它而不进行身份验证。你可能想为此做一个不同的ajax调用。
答案 2 :(得分:0)
如果您的回复中不包含任何内容,请确保在PUT(模型更新)的情况下返回状态204(无内容)而不是200(确定)。