Backbone.js 主干模型。服务器发送200时保存返回错误:确定
我定义了以下主干模型:Backbone.js 主干模型。服务器发送200时保存返回错误:确定,backbone.js,Backbone.js,我定义了以下主干模型: var User = Backbone.Model.extend({ url: "/login", contentType: "application/com.example.auth+json", defaults: { userName: '', password: '' }, validate: function(attrs){
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.'
}
}
});
我在主干中使用以下代码
// ...
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
但我正在打印“错误:[对象]”。为什么它没有到达成功处理程序,尽管服务器成功地验证了用户。如果需要,请建议如何在前端/后端修复此问题。更新
初始化
至:
initialize: function() {
var myUser = {
userName: 'labuser1@example.com',
password: 'abcd_1234',
};
this.model = new User(myUser);
}
您需要在此处初始化您的模型
,然后在中初始化
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调用。您可以使用此代码数据类型:“text”
来修复它
...
this.model.save(myUser, {
dataType: 'text',
success: function () {
...
或者通过将正确的
内容类型
标题设置为应用程序/json
值来修复服务器端。在PUT(模型更新)的情况下,如果您的响应不包含任何内容,请确保返回状态204(无内容),而不是200(确定)。您好,感谢您的快速回复。很抱歉,我现在已经更正了错误。请重新阅读我的代码。我正在按照您的回复中所述进行操作,但仍然会收到相同的错误。这可能是后端服务的问题吗?如果是,您是否知道我们需要更改什么才能使其正常工作。@tarun_telang您的登录服务返回什么?该服务不返回响应数据。它只返回HTTP状态200,如上所述。对于返回JSON对象的服务,我在Windows 8.1中遇到了问题。我能够看到Backbone.model.save()的成功回调在较旧的操作系统(适用于所有浏览器的Windows 7)中执行。其中as应用程序在Windows 8.1中与任何浏览器一起运行时都会保持等待,即使后端服务器将响应类型头设置为application/json。在尝试了保存Backbone.Model和analysis的各种选项之后,我发现添加数据类型:“text”,然后将响应转换为JSON.parse(响应)解决了我在Windows8.1中面临的问题。请更新您的体验?谢谢,我添加了代码数据类型:“text”,问题已经解决。