【问题标题】:Incorrect JSON data formatJSON 数据格式不正确
【发布时间】:2012-02-29 20:21:10
【问题描述】:

我正在尝试创建一些 JSON 用于使用 Highcharts 显示图表

http://www.highcharts.com/

我复制了他们的一个例子:

http://www.highcharts.com/stock/demo/basic-line

点击图表下方的“查看选项”查看源代码。还有一个 JSFiddle 可以玩

如果我在本地复制它,一切正常。

问题是当我尝试使用自己的数据源时。

我有一个 ASP.Net MVC 控制器,它吐出一个数组列表,就像它们的数据源一样。但是,这不起作用。

他们的数据源看起来像这样 http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?

然后他们像这样检索它

$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?', function (data) {

所以我想我会退后一步,准确地复制他们的数据并将其放入我服务器上的文本文件中并尝试:

所以我尝试了这个

$.getJSON('/data.txt', function (data) {

还有这个

$.get('/data.txt', function (data) {

但都不起作用

在检索数据后,我也尝试同时使用 JSON.parsejQuery.parseJSON,但又一次 - 这似乎不起作用

我也想知道是什么?是他们数据的开头

他们的数据是这样的

?([[<some data>],[some data]]);

我没有收到任何错误消息,只是图表不显示

有什么想法吗?

解决了

只需要检索数据并将其转换为数组并传递给图表即可。

需要是一个数组,而不是 JSON

【问题讨论】:

  • 我现在有完全相同的问题......我不认为你可以提供更多关于你如何解决它的信息?试图将 Highcharts 集成到一个项目中,但我不明白为什么他们的演示有效,而使用我自己的却没有……理解其他答案时遇到问题……+1 了。

标签: javascript jquery asp.net-mvc jsonp highcharts


【解决方案1】:

该数据源正在输出 JSONP,用于跨域 AJAX 请求。由于额外的callback(...) 包装器,它不是有效的“原始”JSON。

在此处阅读:http://api.jquery.com/jQuery.ajax/ 在“数据类型”部分下。

【讨论】:

  • 如果您请求的 url 不在您自己的服务器上,它几乎总是被视为跨域请求并被 JS 引擎忽略/终止。没有规定您不能将 jsonp 用于“本地”ajax 请求,这只是没有必要并且会增加一些额外的开销。
【解决方案2】:

正如您在标签中所说,它不是 JSON,而是 JSONP。不要解析它,用回调捕获它。使用jQuery.getScript 来做,定义function callback(data)。在该函数内部,data 应该包含(解析的)对象。另外,将 URL 中的 ? 替换为 callback(或任何您命名的函数) - ? 在 JavaScript 中不是有效标识符,因此 ?([....]) 是无稽之谈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2020-11-17
    • 2018-11-22
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多