我正在使用backbone.js建立一个网站。它在我们的开发服务器上运行得很好,但它不能使用IE7-9解析客户端服务器中的数据。(Firefox和Safari都不错)
我发现backbone调用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()没有触发,如何跟踪该问题?
有没有什么可行的办法让我试试?
谢谢你的建议。
致以敬意,
迈克尔
发布于 2012-05-31 11:48:17
我能看到的两者之间唯一的区别是响应头。
您的服务器:
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
客户机-服务器响应中的content-type引起了我的注意,但我不是IE专家。您可能希望提及您使用哪个版本的IE遇到问题,并测试一些其他版本以隔离它。
发布于 2012-05-31 17:24:39
有没有什么可行的方法可以让我试试?
你好。您是否尝试将错误回调添加到fetch方法?此外,«fail»服务器以fail格式发送fail内容。也许IE不能以正确的方式处理gzipped?或者您可以尝试将Content-Type标题从«text/plain»更改为«application/json»?
发布于 2012-06-04 13:45:21
问题出在这里: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;的其他目录中,以解决此问题。
https://stackoverflow.com/questions/10826930
复制相似问题