Backbone.js无法接收AJAX响应

时间:2015-10-12 15:00:53

标签: javascript ruby-on-rails ajax backbone.js

我在保存模型时遇到了Rails控制器的响应问题。我可以看到XHR响应是在Chrome的devtools的“网络”标签中生成的,但successerror函数不会触发。我怀疑这是在视图中直接强制post方法和不同url的结果,但我不确定,也许我搞砸了一些语法。这是咖啡中保存功能的片段:

save: (user_id) =>
    model = @model
    if $(".task").val()
        @$el.find(".task").each ->
            model.set
                body: @value
                user_id: user_id
                task_title_id: model.id
            return
        model.save null, type: 'post', url: '/tasks',
            success: (model, response) ->
                console.log 'tasks saved!'
            error: (model, response) ->
                console.log "error! ", response.responseText
    else
        console.log 'nothing to save'

并编译JS:

save = function(user_id) {
    var model;
    model = this.model;
    if ($(".task").val()) {
      this.$el.find(".task").each(function() {
        model.set({
          body: this.value,
          user_id: user_id,
          task_title_id: model.id
        });
      });
      return model.save(null, {
        type: 'post',
        url: '/tasks'
      }, {
        success: function(model, response) {
          return console.log('tasks saved!');
        },
        error: function(model, response) {
          return console.log("error! ", response.responseText);
        }
      });
    } else {
      return console.log('nothing to save');
    }
  };

Trivia:我必须为每个现有Task生成一个新的TasktTitle视图,然后将这些新的Tasks提交给服务器。作为Backbone的新手我除了渲染TaskTitles集合并为每个TaskTitle视图添加输入字段,然后强制post方法和{{1保存时的url。它确实感觉很脏,但除了捕获响应之外它按预期工作,这是一个关键部分,因为成功\错误会发生更多逻辑。

0 个答案:

没有答案