我正在使用 Backbone 进行我的第一个主要项目。我有一个名为 SignUpView
的 Backbone View ,其方法如下:
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)
(“注册成功”是在注册成功后从服务器发回的,否则会显示“缺少参数‘密码’”或“无效的电子邮件格式”或类似的信息。)
我知道我可以简单地在错误 block 中捕获 200 状态代码,但我不喜欢这样的事实,即我必须在标记为“错误”的函数中处理成功的帖子。我知道这可能是非常简单和愚蠢的事情,但我就是找不到问题所在。
最佳答案
问题,根据this issue , 无效的 JSON 也被认为是错误。如果服务器返回无效的 JSON(例如 Registration succeeded
),那么这将在错误处理程序中处理。
我将我的服务器响应更改为
{"ok":"Registration succeeded"}
一切都按预期开始工作。
关于javascript - 主干保存 : "success" not getting called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21971611/