我正在使用Backbone开展我的第一个主要项目。我有一个名为SignUpView
的Backbone视图,其方法如下:
register: function(){
this.model.save({
email: $('#email').val(),
password: $('#passwd').val()
},{
success: function(model, response){
console.log("Registration succeeded, congrats!");
window.location.hash = '';
},
error: function(model, response){
console.log("Registration failed, reason = "
+ response.responseText
+ " (status "+response.status+")");
}
});
return false;
}
但是,每当我运行它时,只会调用error
回调。这会导致奇怪的行为,例如控制台记录
Registration failed, reason = Registration succeeded (status 200)
(成功注册后,“注册成功”将从服务器发回,否则会显示“缺少参数'密码'”或“无效的电子邮件格式”或类似内容。)
我知道我可以简单地在错误块中捕获200状态代码,但我不喜欢这样的事实,即我必须在标记为“error”的函数中处理成功的帖子。我知道这可能是非常简单和愚蠢的事情,但我找不到什么是错的。
答案 0 :(得分:5)
根据this issue,问题是无效的JSON也被视为错误。如果服务器返回无效的JSON(例如Registration succeeded
),那么这将在错误处理程序中处理。
我将服务器响应更改为
{"ok":"Registration succeeded"}
并且一切都按预期开始工作。