Google arrayToDataTable-行0的行类型无效
Google arrayToDataTable - Invalid row type for row 0
我被卡住了(又一次!),似乎找不到这样的例子。我尝试过多种提取和格式化数据的方法,但都没有成功。
我有以下数据,通过服务器脚本以JSON格式提供:
[{
"franchisee_name":"John Smith",
"dish_menu":"Breakfast",
"dish_title":"Bagels",
"hq_price":"9.00",
"store_price":"18.00",
"valid_from_date":"2014-04-13",
"valid_to_date":"9999-12-31"
},
{
"franchisee_name":"Sam Jones",
"dish_menu":"Breakfast",
"dish_title":"Muesli",
"hq_price":"8.00",
"store_price":"13.00",
"valid_from_date":"2014-04-13",
"valid_to_date":"9999-12-31"
}, ......
我想使用将其放入谷歌可视化表中
var data = google.visualization.arrayToDataTable(jsonData);
我知道数据需要如下所示:
['Franchisee', 'Menu Type','Dish', 'HQ Price', 'Store Price', 'Valid From', 'Valid To'], <-- header row
['John Smith', 'Breakfast', 'Bagels', '9.00', '18.00', '2014-04-13', '9999-12-31'], <-- data row
....
我的代码是:
jQuery.getJSON( url, function( data ) {
var header = ['Franchisee', 'Menu Type','Dish', 'HQ Price', 'Store Price', 'Valid From', 'Valid To'];
var row = "";
var rows = new Array();
jQuery.each( data, function( i, d ) {
row = [ d.franchisee_name, d.dish_menu, d.dish_title, int(d.hq_price), int(d.store_price), d.valid_from_date.toString(), d.valid_to_date.toString() ];
rows.append(row);
});
var jsonData = [header].concat(rows);
var data = google.visualization.arrayToDataTable(jsonData);
// Set chart options
var options = {
showRowNumber: 'false'
};
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.Table(document.getElementById('hq_report_div'));
chart.draw(data, options);
});
但我得到了错误Invalid row type for row 0
,还没有找到如何解决这个问题的示例。谢谢你的帮助!
通过在回调函数中声明var data
,您将成为javascript提升机制及其伴随的作用域微妙之处的牺牲品1。基本上,您的声明会转到函数的顶部,并屏蔽您的命名参数:data
不等于[...]
,而是等于undefined
,请参见Fiddlehttp://jsfiddle.net/dVaC2/来说明我的观点。
例如,将变量重命名为gdata
(并使用parseInt()
代替int
()和[].push
代替[].append
):
var gdata = google.visualization.arrayToDataTable(jsonData);
// ...
chart.draw(gdata, options);
还有一个演示http://jsfiddle.net/dVaC2/1/
1请参阅http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html或Javascript函数范围界定和提升,例如
相关文章:
- 警告:失败的propType:类型为“array”的无效prop应为React的“object”
- ReactJS - 元素类型无效错误
- Webgl readPixels() 无效操作:格式/类型组合无效
- 未捕获错误:不变冲突:元素类型无效:应为字符串
- 未捕获的不变冲突:元素类型无效(react、webpack、循环导入)
- 类型错误: 无效的“in”操作数 obj
- 如何使用node.js修复Twilio中无效的内容类型标头
- jQuery image丢弃无效的图像类型,并显示一条无效的消息而不是警告框
- 无效的“in”操作数 obj JQUERY - 尝试从 JSON 获取数据时出现类型错误
- 反应.js - “不变冲突:元素类型无效:预期字符串”简单按钮
- 未捕获的错误:不变冲突:元素类型无效:需要字符串(对于内置组件)或类/函数,但得到:对象
- Getting Invariant违规:使用createBrowserHistory时元素类型无效react-route
- react router问题未捕获错误:不变冲突:元素类型无效:应为字符串(用于内置组件)
- React Redux错误提供给“Provider”的“object”类型的道具“children”无效
- 轨道-“;对象值“;是属性“”的无效值;对象“;具有类型“;参考文献“;
- 元素类型无效:期望是字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义
- 未捕获错误:google表列的类型无效
- Google arrayToDataTable-行0的行类型无效
- 元素类型无效,应为未定义的字符串
- 元素类型无效:期望是字符串或类/函数,但得到的是:对象