javascript - 主干保存 : "success" not getting called

标签 javascript backbone.js

我正在使用 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/

相关文章:

javascript - 如何在 ASP.NET MVC 中将不同的 View 显示为幻灯片

javascript - Backbone.js:根据点击事件过滤集合

backbone.js - underscore.js 过滤函数

javascript - 未捕获的类型错误 : Cannot Set Property 'Render' of Undefined

javascript - 通过 JS 设置的 Cookie 在浏览器关闭时过期未过期

javascript - 将 Google 日历作为 iframe 嵌入到 React 应用程序中?

javascript - 如何检测FileReader加载结束?

javascript - vscode更改javascript缩进大小

javascript - Backbone.js View 在其创建期间的生命周期

javascript - 如何管理ajax响应错误