Backbone.jserror handling – 你怎么做?

我想知道人们通常如何使用backbone.js进行error handling。 每次我调用model.save(这又调用Backbone.sync)时popup一些东西会很好。 问题是,backbone.js如何知道服务器上发生了错误或成功? 我知道它会知道是否有500服务器错误或类似的东西(jquery知道,因为Backbone.sync调用jQuery.ajax) – 但我想能够传递消息和其他代码,所以我可以给更有意义的错误消息给用户。

我有一个想法,并会喜欢一些反馈。 这个想法是重写Backbone.sync。 新的同步从服务器获得响应,该服务器必须采用特定的格式。 这种格式会是这样的:

ServerResponseObject: > ResponseCode > Message > Model 

没有什么奇特的,但基本上,而不是只是返回普通的模型,它是包装了一个ResponseCodeMessage ,可以显示给用户。

这是正常的做法吗? 任何其他更好的方法?

谢谢!

在我听来,这听起来有点复杂,至less从一开始就是这样。 Backbone.sync会报告你可以在你的模型.save()方法中遇到的错误:

 this.mymodel.save(/* ... */, {success: function(model, result, xhr)..., error: function(model, xhr, options)...} 

( docs )。

如果你的服务器端很好地遵循HTTP 规范 ,错误代码已经提供( 500 – 服务器错误, 404 – 模型没有find,你知道..),即使服务器发送错误代码,它仍然可以发送内容信息)。 所以你基本上已经拥有了内置于HTTP协议本身的所有参数。 根据我的经验,如果使用协议,而不是在其上创build新图层,则可以编写更less的代码。

在上面的errorcallback中,您可能有很好的可能性调用系统的其余部分,并将错误发布到某些应用程序消息总线或类似的地方(通过Backbones自己的事件机制或某个专用 库 )。

我们切换回发送标准格式JSend 。 它基本上只是一个JSON包装的响应,除了你所期望的数据外,还有消息和错误代码。

我们不得不这样做的主要原因是因为我们有400个错误的服务,而这个服务真的不是合适的。 客户没有错误的语法或任何协议级别的错误,只是有一些问题,我们需要一个更细致的反应,并给了我们。 我们这样做后,在客户端和服务器端双方都变得更加快乐了。