骨干保存:“成功”没有被调用

时间:2014-02-23 17:21:08

标签: javascript backbone.js

我正在使用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”的函数中处理成功的帖子。我知道这可能是非常简单和愚蠢的事情,但我找不到什么是错的。

1 个答案:

答案 0 :(得分:5)

根据this issue,问题是无效的JSON也被视为错误。如果服务器返回无效的JSON(例如Registration succeeded),那么这将在错误处理程序中处理。

我将服务器响应更改为

{"ok":"Registration succeeded"}

并且一切都按预期开始工作。