今天在公司的一个报表项目中,IE使用FusionCharts的时候突然出现了"error in loading data"的错误提示(在火狐中是正常的)
之前在本地测试的时候正常的啊,怎么到线上就出现问题了?
由于是flash调用xml,我第一个想到的是会不会是编码的问题。
google查找了一下,http://kb.fusioncharts.com/questions/387/How+to+use+UTF-8+characters+with+PHP%3F 按照官方的说啊,把编码都改成了UTF8,而且也加上了BOM头。
echo pack("CCC",0xef,0xbb,0xbf);
echo "<"."?xml version=\"1.0\" encoding=\"UTF-8\"?".">\n";
header(‘Content-type: text/xml;charset=UTF-8’);
加上这几行之后发现返回的数据已经没有乱码了,但是IE中点击饼图还是显示"error in loading data"啊。一下子没找到啥问题。
无意中突然想到,代码搬到线上之后,服务器是使用了HTTPS协议,会不会跟这个有关呢?于是马上加上HTTPS的关键词google一下。
发现还真的跟这个有影响。贴一下官方关于HTTPS协议使用FusionCharts的问题说明(英文不好,我就不翻译了哈)
地址:http://docs.fusioncharts.com/free/Contents/Adv_SSL.html
So, if you’re using dataURL method on Internet Explorer, you need to make sure that the server does not send no-cache headers for the XML data. To do so, set the following headers for your XML Data provider page:
Cache-Control: cache, must-revalidate
Pragma: public
于是,在输出数据之后再加上几个header信息测试,IE内核的已经OK了
header("Cache-Control: cache, must-revalidate");
header("Pragma: public");
特此记录一下
评论