Javascript 不使用 jQuery 解析 JSON

标签 javascript json

我正在关注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/

相关文章:

javascript - Jquery 淡入.after()?

javascript - 调试 Node.js Azure 函数

javascript - javascript中唯一键上的俱乐部JSON对象

c# - ASP.NET MVC JSON 将 HTML 表单发布到 View ?

json - 根据JSON属性从Redis Sorted Set中删除

javascript - 扩展 Json 声明

javascript - 2 AJAX 不起作用

javascript - 为什么 JavaScript 不显示解析后的 json 数据?

来自 mysql 的 PHP json_encode > 不带列名的输出

javascript - 在 Javascript 中,函数会启动一个新的作用域,但我们必须小心,必须调用该函数才能创建作用域,是这样吗?