Backbone.js没有在IE中解析数据

时间:2012-05-31 03:03:53

标签: javascript ajax backbone.js backbone-events

我正在使用backbone.js来构建一个网站。它在我们的开发服务器中运行良好,但它没有使用IE7-9解析客户端服务器中的数据。 (Firefox,Safari很好)

我发现骨干调用fetch()来请求数据,但是当数据返回时它不会启动parse()。我找不到成功或错误的回报。代码的一部分是:

EMR.CategoriesCollection = Backbone.Collection.extend({

        url : 'contents/json/categories.txt',

        initialize:function () {
            console.log('Get data from:', this.url);
            this.fetch();
        },

        model: EMR.ItemModel,

        parse : function(data) {
            console.log("CategoriesCollection parse data:", [data]);
            return data; 
        }
    });

请比较下面的两个链接(在IE 7-9中),它们是相同的代码集,只是服务器差异:

它有效: 1)http://pms.dq.hk/clients/amex_eMR/client/cn/emr/test_data.html

失败了: 2)http://qwww.americanexpress.com/hk/cn/emr/test_data.html

如果backbone发送了fetch(),但是parse()没有触发,那么如何追踪问题呢?

我可以尝试任何可能的方法吗?

感谢您的建议。

此致

迈克尔

3 个答案:

答案 0 :(得分:0)

我能看到的两者之间的唯一区别是响应标题..

您的服务器:

Connection  Keep-Alive
Date    Thu, 31 May 2012 03:41:16 GMT
Etag    "ae6691-123ac-59de3b00"
Keep-Alive  timeout=15, max=98
Server  Apache/2.0.63 (Unix) PHP/5.3.2 DAV/2

客户端服务器:

Connection  keep-alive
Content-Type    text/plain; charset=big-5
Date    Thu, 31 May 2012 03:41:25 GMT
Last-Modified   Tue, 22 May 2012 06:41:10 GMT
Vary    Accept-Encoding

客户端服务器响应中的内容类型引起了我的注意,但我不是IE专家..你可能想提一下你遇到问题的IE版本并测试一些其他版本来隔离它..

答案 1 :(得分:0)

  

我可以尝试任何可能的方法吗?

您好。您是否尝试向fetch方法添加错误回调? 此外,«fail»服务器以gzip形式发送gzip压缩内容。也许IE无法以正确的方式处理gzip压缩包!或者您可以尝试将Content-Type标题从«text / plain»更改为«application / json»?

答案 2 :(得分:0)

问题在于: http://forum.jquery.com/topic/the-problem-with-ie8-and-encoding-error-c00ce56e

我们客户的服务器返回

中的数据
Content-Type    text/plain; charset=big-5

当我在fetch()中添加错误处理程序时,我可以看到错误返回“由于错误c00ce56e而无法完成操作”。这是parse()不起作用的原因。

我无法更改客户端的服务器设置,因此我将数据文件放到返回Content-Type text / plain的其他目录中;解决问题。