带有XML响应的Backbone.js - 在解析错误之前未调用解析函数

tom*_*umb 2 xml ajax parsing backbone.js

我正在使用Backbone.js构建一个通常通过JSON与Web服务通信的应用程序.

一个Web服务将在成功时返回JSON,或者在错误中返回XML(聪明,是吧?).我需要解析这个XML响应以确定错误,但Backbone的以JSON为中心的思想导致了我的问题.

我有一个包含解析功能的集合.当服务返回JSON时,总是调用parse函数,在这种情况下,我只返回响应对象.然而,当服务返回XML我取通话的错误回调函数被调用,并与传递一个错误的对象arguments[1]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;
Run Code Online (Sandbox Code Playgroud)

Tyl*_*ler 7

文档对此很模糊. Model.fetch([options])用途Backbone.sync.该用于同步文档说,你可以使用"所有其他的jQuery请求选项",意思是通过支持任何jQuery.ajax.

因此,要将响应作为原始文本,您可以执行以下操作:

this.fetch({ dataType: 'text' });

然后在您的parse函数中,您可以根据需要处理响应.

旁注:在尝试获取模型以获取XML并使用该dataType进行测试时,我想到了这一点.