Skip to main content
 首页 » 编程设计

jquery之如何处理 Backbone.js 集合请求中的 204 响应

2026年10月07日3birdshome

在我的基于 Backbone.js 的应用程序中,我正在与我的 API 进行对话,该 API 会响应 204 状态和空正文,以防请求的集合尚不包含任何数据。在我看来,RESTful API 在这种情况下应该如何响应。

现在我的应用程序遇到了问题,显然在收到 204 响应后没有触发任何事件。我尝试绑定(bind) reset 和 all ,例如:

  FoosCollectionView.prototype.initialize = function() { 
    this.collection = new FoosCollection; 
    this.collection.bind('reset', this.render, this); 
    this.collection.bind('all', this.render, this); 
    return this.collection.fetch(); 
  }; 

但事件从未触发。所以我尝试给 fetch 一些回调:

  FoosCollectionView.prototype.initialize = function() { 
    this.collection = new FoosCollection(); 
    return this.collection.fetch({ 
      success: function(a, b, c) { 
        debugger; 
      }, 
      error: function(a, b, c) { 
        debugger; 
      }, 
      complete: function(a, b) { 
        debugger; 
      } 
    }); 
  }; 

同样的行为。如果响应是 204,则不会到达任何调试语句。那么我该如何处理 204 响应呢?我是否必须深入研究 sync 并为 204 添加额外的处理,或者 Backbone 中是否有我还不知道的东西?

谢谢菲利克斯

请您参考如下方法:

这个解决方案看起来相当前卫,但同时又很尴尬:

我只是在集合中定义了 parse 方法,以便它检查传递的响应对象是否为空。只有发生 204 时才会出现这种情况。然后在 parse 中我设置了 this.collection.models = [] ,它会触发 reset 事件。 Collection View 绑定(bind)到该事件,运行一个可以查看 this.collection.models 内部的函数。如果没有给出模型,则可以呈现“无内容”模板,而不是标准模板。

如果有人有更好的方法,我将不胜感激!