javascript – 为什么我的Backbone.js错误回调被调用,即使Rails应该返回成功响应?

我正在使用Backbone.js(版本0.5.3)并且在 saving a model时遇到成功回调的问题.即使模型已成功保存在服务器上,它仍未运行.

CoffeeScript的:

console.log 'in switch_private'
console.log "private_entry attribute is currently #{@model.get('private_entry')}"
@model.save {'private_entry': true},success: ->
    console.log 'in success'

编译Javascript:

console.log('in switch_private');
console.log("private_entry attribute is currently " + (this.model.get('private_entry')));
return this.model.save({
  'private_entry': true
},{
  success: function() {
    return console.log('in success');
  }
});

控制台输出

in switch_private
private_entry attribute is currently false
XHR finished loading: "http://localhost:3000/entries/235".

我正在回头:从Ruby on Rails的更新操作中确定.

添加模型和响应参数,以便它成功:(模型,响应) – >,没有什么区别.出了什么问题?

编辑:
根据Trevor Burnham的建议,我添加一个错误回调,它正在运行.那么我应该从Ruby on Rails动作返回什么才能让Backbone考虑保存成功?目前我有头:好的

编辑2:这是我更新的编译Javascript:

var this_view;
this_view = this;
return this.model.save({
  'private_entry': !(this.model.get('private_entry'))
},{
  success: function(model,response) {
    return console.log('in success');
  },error: function(model,response) {
    return console.log('in error');
  }
});

这是PUT请求:

解决方法

我遇到过这个.你不能只返回head:ok并使用Backbone的认行为.认的Backbone.Sync不会有它.

首先,如果您在创建操作中执行此操作,您将永远不会知道您的id是什么,因此模型将无法在以后更新(您正在执行此操作,因为“PUT”).

其次,在您的更新操作中,如果您返回头部,模型将不知道数据是否真正同步:确定,因此同步再次失败.但如果你没有身份证明也没关系.

无论如何,你需要在体内归还一些东西.

认情况下,Rails脚手架返回head:ok成功更新后.这与Backbone没有关系.要修复它,请返回JSON:

render json: @entity

(其中@entity是你的变量在动作中的任何内容)

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...