如题,fusionchart抛出这个错误,本身是告诉我们数据错误。
出现的原因便锁定到数据错误,这就是最虐心的事情了,我一一说来:
我做了下它的封装,放到了ext的Ext.container.Container组件里。数据是官方例子,我放在了data.json文件里。
使用的数据请求是chart.setJSONUrl('data.json')
以上是第一次渲染完成的样子。
这一切都没有问题,但这蕴含了一个大问题,当我切换页面到‘近日重要事项’后,再切换回来:
好了,出错了。
--------------------------------------------------------------------------------------------------------------------------------------------------
于是打开它的debug模式:
最后一段文字惊呆了我. 我传递的本来是json格式数据,为何使用setJSONUrl后 它的渲染内容竟然是XML Data呢??
我清楚的看到后3行的信息 setDataXML XML Data ...
可我用的是setJSONUrl json Data 啊
------------------------------------------------------疑惑1,我不明白fusionchart内部到底做了什么样的转换,激发我研究它代码的冲动。
第一次渲染结束,我重复之前的操作,果然,错误出现了,debug模式下的提示信息:
No Data to Display: No data was found in the XML data document provided. Possible cases can be:
There isn't any data generated by your system. If your system generates data based on parameters passed to it using dataURL, please make sure dataURL is URL Encoded.
You might be using a Single Series Chart .swf file instead of Multi-series .swf file and providing multi-series data or vice-versa.
让我欣慰的是 我JSON格式的数据终于变回来了,这果然是造成这个错误的原因,页面切回来之后,数据格式对了,但是它的读取还是XML!!!!!
这究竟是为什么? 我页面切过来的一刹那到底发生了什么?
我打开firebug仔细看数据请求,它在切换的时候,并没有再次发送请求啊 why?
--------------------写到这 我停了下,在chrome里看了一下. 我很惭愧:
我等会面壁。今儿先写到这 我去看看到底是不是它再切换的刹那 又重新渲染到页面上,进而发送了请求!!!!!
说下解决办法,1年前我做它的时候,使用的是静态数据,也就是说数据请求交由其他工具 如ext里的ajax.request 数据请求过来后再使用fusionchart的set..Data方法
这样的话 就绕开了fusionchart自身发送的请求信息。当然这也是我第一次使用url的方式请求,过几天再研究它前后通信的过程然后更新。