1

我正在使用backbone.js 来构建一个网站。它在我们的开发服务器中运行良好,但它没有使用 IE7-9 解析客户端服务器中的数据。(火狐、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

如果主干发送了 fetch(),但 parse() 没有触发,如何追踪问题?

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

谢谢你的建议。

问候,

迈克尔

4

3 回答 3

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 的其他目录;解决问题。

于 2012-06-04T05:45:21.287 回答
0

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

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

于 2012-05-31T09:24:38.937 回答
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 版本并测试其他一些版本以隔离它..

于 2012-05-31T03:48:17.483 回答