我正在关注this来自 amCharts 的示例,但我无法从 PHP 文件加载 JSON,这是我所做的:
AmCharts.loadJSON = function(url) {
if (window.XMLHttpRequest) {
var request = new XMLHttpRequest();
} else {
var request = new ActiveXObject('Microsoft.XMLHTTP');
}
request.open('GET', url, false);
request.send();
return eval(request.responseText);
};
AmCharts.ready(function() {
var chartData = AmCharts.loadJSON('chart.php');
console.debug(chartData);
});
但我总是得到:
return eval(request.responseText);
Uncaught SyntaxError: Unexpected string
我用谷歌搜索过,但所有解决方案都包含 jQuery,建议不要使用 eval。
最佳答案
使用JSON属性,它是 window
对象的一部分(除非您使用的是旧浏览器)。
JSON.parse(request.responseText);
这是一个shim适用于 IE7 和其他旧浏览器。
要将对象转换为 JSON 字符串,请使用 JSON.stringify({ foo: 1 });
确定是否需要垫片,您可以简单地做
if(JSON){
// safe to use the JSON object
}
根据您的评论,您有一些无效的语法:
[{ "date": "22/03/14", "value1": 15, "value2": 12.1 "value3": 15 "value4": 15 }]
某些属性缺少逗号来分隔它们。它应该看起来像这样:
[{ "date": "22/03/14", "value1": 15, "value2": 12.1, "value3": 15, "value4": 15}]
请注意,您发布的是一个数组。无需使用JSON.parse()
。就 JSON 而言,这里唯一有效的是将其字符串化为 JSON string
。但我认为这不是您所追求的。
但是,如果它是您向我提供的评估字符串,则应将 eval()
替换为 JSON.parse()
。
关于Javascript 不使用 jQuery 解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22592466/