rails 3.2.1上的morris.js无法从html获取json
我在morris.js图形库上有一个奇怪的错误
这适用于graphs.js
$(document).ready(function() { Morris.Line({ element: 'annual', data: [ {y: '2012', a: 100}, {y: '2011', a: 75}, {y: '2010', a: 50}, {y: '2009', a: 75}, {y: '2008', a: 50}, {y: '2007', a: 75}, {y: '2006', a: 100} ], xkey: 'y', ykeys: ['a'], labels: ['Series A'] }); })
这不是graphs.js
$(document).ready(function() { Morris.Line({ element: 'annual', data: $('#logs_chart').data('logs'), xkey: 'y', ykeys: ['a'], labels: ['Series A'] }); })
在相应的HTML中
我明白了
Uncaught TypeError: Cannot call method 'match' of undefined morris.js:316 Morris.parseDate = function(date) { var isecs, m, msecs, n, o, offsetmins, p, q, r, ret, secs; if (typeof date === 'number') { return date; } m = date.match(/^(\d+) Q(\d)$/); Uncaught TypeError: Cannot call method 'match' of undefined n = date.match(/^(\d+)-(\d+)$/);
有人遇到这个并找到了解决方案吗?
填充数据日志中的图形数据不起作用,因为它是一个字符串。 您需要使用JSON.parse , jQuery.parseJSON或类似方法解析数据。
值得注意的是,您在示例中获得的数据不是严格有效的JSON,您需要转义密钥,例如:
和相应的HTML:
$(document).ready(function() { Morris.Line({ element: 'annual', data: $.parseJSON($('#logs_chart').data('logs')), xkey: 'y', ykeys: ['a'], labels: ['Series A'] }); })
对我来说,解决方案是将json输出放在HTML末尾的脚本标记中的变量中。
像这样
并在graphs.js文件中调用此变量
$(document).ready(function() { Morris.Line({ element: 'annual', data: json_data, xkey: 'y', ykeys: ['a'], labels: ['Series A'] }); })