我正在使用 Backbone.js 构建一个通常通过 JSON 与 Web 服务通信的应用程序。
一项 Web 服务将在成功时返回 JSON 或在错误时返回 XML(聪明,是吗?)。我需要解析这个 XML 响应来确定错误,但是 Backbone 以 JSON 为中心的思维给我带来了问题。
我有一个包含解析函数的集合。当服务返回 JSON 时,总是调用 parse 函数,在这种情况下,我只是返回响应对象。arguments[1]
但是,当服务返回 XML 时,我的 fetch 调用的错误回调函数被调用,并传递了一个带有of的错误对象parseerror
。进一步挖掘显示有一个意想不到的<
角色。
为什么在抛出 parseerror 之前没有调用我的 parse 函数来解析 XML?此外 - 为什么在成功的 JSON 调用中,它传递了一个 JavaScript 对象(表明 JSON 字符串已经被解析)?解析函数不应该进行解析吗?
下面的相关代码,任何建议都非常感谢。
var myCollection = Backbone.Collection.extend({
initialize : function() {
...
},
fetch: function(options) {
var options = {data: {...}, error: this.onFetchError};
Backbone.Collection.prototype.fetch.call(this, options);
},
onFetchError: function(arg1, arg2, arg3) {
debugger
},
parse: function(response) {
debugger
if(typeof response === 'object') {
return response;
}
}
});
return myCollection;