Javascript ';错误';无论http状态代码如何,都会在我的主干模型上触发事件
我正在尝试创建一个基本Javascript ';错误';无论http状态代码如何,都会在我的主干模型上触发事件,javascript,ajax,backbone.js,Javascript,Ajax,Backbone.js,我正在尝试创建一个基本主干模型来处理所有http错误。以下是模型的代码: define(function(require) { 'use strict'; var Backbone = require('backbone'); var BaseModel = Backbone.Model.extend({ initialize: function(attributes, options) { options || (options = {}); t
主干模型来处理所有http错误。以下是模型的代码:
define(function(require) {
'use strict';
var Backbone = require('backbone');
var BaseModel = Backbone.Model.extend({
initialize: function(attributes, options) {
options || (options = {});
this.bind("error", this.defaultErrorHandler);
this.init && this.init(attributes, options);
},
defaultErrorHandler: function(model, error) {
if(error.status === 401 || error.status === 403 || error.status === 500) {
console.log(error.status);
}
}
});
return BaseModel;
});
显然,无论http
调用发生什么,都会触发error
事件。即使我从服务器上得到一个200
,我仍然会点击我的defaultErrorHandler
。有人能解释一下我所附加的错误事件的真正作用吗?另外,是否有某种我可以订阅的事件只会给我真正的错误?主干网的保存方法将失败,如果:它没有从服务器获得200响应;该模型有一个名为validate
的方法,该方法返回false。虽然文档没有明确说明这一点,但如果您保存一条新记录,我认为它会返回一个属性散列,其中包括一个“id”属性,该属性应该是一个整数。如果该记录丢失,主干网可能会认为无法在服务器端保存该记录。建议只有在保存调用失败时才会触发该记录。我不知道主干,但很多东西都会在HTTP 200响应上返回失败代码(关于是返回200还是其中一个HTTP失败代码,存在着一场激烈的争论)。可能是由于服务器端原因导致save失败,并在200响应中返回错误?我可以访问服务器,并且一切正常。我认为这是对error
事件的某种误解。在调用fetch函数时,如果没有特定的错误处理,那么将调用jquery的ajax,并调用error事件。我建议您可以编写一个测试方法,只需使用jquery的$.ajax调用您的服务器,看看它是否工作。@jhamm:“我认为这是对错误事件的某种误解”Dunno,该链接所说的一点很清楚,它只在失败时被调用。祝你好运,@T.J.Crowder,你是对的,这很清楚,这不是我最聪明的说法。我查看了主干
文档,当服务器上的模型保存调用失败时,它会显示“错误”(model,xhr,options)。如果我的客户返回的是200
,它如何知道保存是否失败?