2012-06-28 44 views
3

Backbone.js有一个整洁的功能,您可以使用标准HTTP动词将更改同步到服务器。HTTP状态代码 - Backbone.js和Jquery

例如,你可能有一个模型对象和一些代码,执行一个GET:

var coolModel = Backbone.Model.extend({url:'mysite/mymodel'}); 
var myCoolModel = new coolModel(); 
myCoolModel.fetch({error:processError}); 

在哪里,服务器返回4XX或者5XX的情况下,误差函数“的processError”运行,这是伟大的,您可以处理适合的错误。

由于backbone.js使用jQuery来执行GET,Jquery报告错误,它是。 4XX是一个有效的错误,应该从中恢复,我的客户端应用程序没有被破坏,它只需要表现稍微不同。

我的问题是 - 从浏览器控制台窗口或状态栏中显示jQuery引发此错误是否被认为是不好的做法?我是否应该以某种方式抑制此错误,以便在错误可恢复时,生产中的用户看不到浏览器报告的错误?或者,在HTTP的土地上保持原样是否正确?

+0

如果您的模型验证就绪并且您的服务器端脚本正常工作,则应该看不到这些错误。无论如何,如果用户没有通过错误的输入等引起这些错误,请不要将它们显示给用户。 –

+0

jQuery是否真的向控制台报告错误?或者您的意思是浏览器调试工具的网络面板,可以看到状态代码? – Bergi

回答

2

Backbone中的处理错误是一个非常有趣的话题,我希望在某个时候写出来。以非突兀的方式直观地向用户指出错误非常好。有些事情要考虑的是:

  • 您的用户不看状态栏或开发工具
  • 你的用户是从您的应用程序期待特定行为
  • 当你的应用程序的行为不正确的视觉问题指标重要的

我建议考虑失败如何影响用户的意图。例如,如果他们正在获取第一页的数据并且数据没有被正确地返回,那么您将需要通过显示检索到的数据的失败来处理错误(或者甚至更好地回退缓存中以前加载的数据......它它存在)。如果意图是保存一个项目,并且返回的错误代码是400,那肯定不会成功,应该指出用户应该再次尝试保存(或者尝试在间隔时间内重新保存)。

您可以静静地忽略错误并且不会指出它们,但是您的用户会感到困惑并且会导致意想不到的问题。我不能鼓吹使用完美的错误处理,因为我自己仍然在改进。

1

我会说HTTP状态码是有原因的,如果它们的原因是有效的,那么完全有效,所以是的,只是使用它们。 但是400意味着Bad Request,这意味着输入在语法上是错误。您应该发送更多appropriate header(如409冲突,428失败的先决条件等)。我正努力想出一个有效使用418 I'm a teapot的项目,但我会在某一天取得成功。

任何对您的网站的内部工作感兴趣的人都可以看看控制台,但应该没有问题有了这个,你也不应该过度干练地看看那里,只要确保你自己的流程是健全的。

+1

感谢您的支持。我可能不清楚。我会修改我的问题。我很自然地认为使用状态代码是一种可行的方式,它并不是真正的使用哪种状态代码的问题。我的问题是抑制此错误是否合适,以便在错误可恢复时,生产中的用户看不到浏览器报告的错误。 –

+1

'普通'用户不会看到任何错误。控制台'打开'的人不是普通用户。这就像你是一个出租车司机,你的客户打开你的汽车引擎盖来评估你的引擎:这并不是真的。或者我仍然在某个地方错过了这个观点? – Wrikken