【发布时间】:2016-12-05 20:01:20
【问题描述】:
我有一个简单的 javascript/jquery 代码,它从某个 Web 服务请求数据,该服务返回可用于创建 highcharts 条形图的数据。来自服务器的响应无法解析为 JSON,因为它包含一个单击事件处理程序,JSON.parse 无法解析该处理程序,错误为 Unexpected keyword ....
javascript 代码如下所示
$.ajax({
type:"POST",
url:"service/call"
}).done(function( xdata ) {
// this is not going to work as xdata is not object but plain text
$('#container').highcharts(xdata);
});
服务器的响应是这样的
{
"chart" : {
"type" : "bar"
},
"series" : [ {
"data" : [ 25, 10 ]
} ],
"title" : {
"text" : ""
},
"xAxis" : [ {
"categories" : [ "data1", "data2"],
"allowDecimals" : false
} ],
"yAxis" : [ {
"title" : {
"align" : "high",
"text" : "Some Title"
},
"allowDecimals" : false,
"labels" : {
"overflow" : "justify"
},
"min" : 0
} ],
"credits" : {
"enabled" : false
},
"plotOptions" : {
"bar" : {
"colors" : [ "#87bdee", "#ffcccc"],
"colorByPoint" : true,
"dataLabels" : {
"enabled" : true
},
"point" : {
"events" : {
"click" : function(){window.location.href = '/data?type=' + (this.x == 0 ? 'data1' : (this.x == 1 ? 'hold' : (this.x == 2 ? 'data2' : (this.x == 3 ? 'data3' : (this.x == 4 ? 'data4' : (this.x == 5 ? 'data5' : (this.x == 6 ? 'data6' : 'data7')))))) )}
}
}
}
},
"tooltip" : {
"valueSuffix" : " elements"
},
"creditOptions" : {
"enabled" : false
}
}
我可以访问服务器端和客户端代码。
那么有没有一种简单的方法可以让事情顺利进行?我的意思是如何在不更改响应的情况下创建高图?
【问题讨论】:
-
它试图将响应解析为 JSON,但它是 not JSON。您不返回 JSON。 JSON is a specific format 仅支持字符串、数字、对象、数组、布尔值和 null。 JSON 文件/字符串中不能有
function。 -
您可以尝试将函数转换为字符串,然后使用
eval()或Function将函数解析为字符串 -
JSON 中不能有函数,它纯粹是一种数据格式。您可以有一个字符串并在其上运行 EVAL,或者只使用函数名称和参数(即保留已在客户端上定义的函数,只需提供参数)
-
@RocketHazmat 是的,我知道,所以我想知道是否有一种简单的方法可以使用我从服务器获得的响应来创建图表 :)
-
更新了问题,只是删除了所有关于 JSON 的东西,所以我有一个服务可以返回一些需要用来创建高图的数据...
标签: javascript jquery json ajax highcharts