我正在使用JS对象通过Google可视化创建图形。我正在尝试设计数据源。首先,我创建了一个JS对象客户端。
var JSONObject = { cols: [{ id: 'date', label: 'Date', type: 'date' }, { id: 'soldpencils', label: 'Sold Pencils', type: 'number' }, { id: 'soldpens', label: 'Sold Pens', type: 'number' } ], rows: [{ c: [{ v: new Date(2008, 1, 1), f: '2/1/2008' }, { v: 30000 }, { v: 40645 }] }, { c: [{ v: new Date(2008, 1, 2), f: '2/2/2008' }, { v: 14045 }, { v: 20374 }] }, { c: [{ v: new Date(2008, 1, 3), f: '2/3/2008' }, { v: 55022 }, { v: 50766 }] } ] }; var data = new google.visualization.DataTable(JSONObject, 0.5);
现在,我需要动态获取数据。因此,我将AJAX请求发送到返回JSON字符串的页面:
"cols: [{id: 'date', label: 'Date', type: 'date'}, {id: 'soldpencils', label: 'Sold Pencils', type: 'number'}, {id: 'soldpens', label: 'Sold Pens', type: 'number'}], rows: [{c:[{v: new Date(2008,1,1),f:'2/1/2008'},{v: 30000}, {v: 40645}]}, {c:[{v: new Date(2008,1,2),f:'2/2/2008'},{v: 14045}, {v: 20374}]}, {c:[{v: new Date(2008,1,3),f:'2/3/2008'},{v: 55022}, {v: 50766}]}"
我将其保存到变量中:
var var1 = "cols: [{i ....... 66}]}"
并显示为
alert(var1);
现在,我的任务是从该字符串创建一个JS对象。这是行不通的。当我使用JS对象时,一切工作正常,并且能够获得所需的图形。现在,如果我尝试从警报消息中确认的来自AJAX请求的相同字符串值放入对象中,则无法正确创建该对象。请让我知道您的意见以及任何更正或建议。
一些现代的浏览器支持将JSON解析为本地对象:
var var1 = '{"cols": [{"i" ....... 66}]}'; var result = JSON.parse(var1);
对于不支持它的浏览器,可以从json.org下载json2.js以便安全地解析JSON对象。该脚本将检查本机JSON支持,如果不存在,请提供JSON全局对象。如果有更快的本机对象可用,它将直接退出脚本而保持原样。但是,您必须提供有效的JSON否则将引发错误- 您可以使用http://jslint.com或http://jsonlint.com检查JSON的有效性。