我正在尝试接收JSON字符串并将其提供给canvasJS图表。我正在努力弄清楚如何将我的字符串转换为正常工作。这是我正在尝试的,这是行不通的:
function loadGraph(serialNum){
$.post("../Modules/LoadGraph_Mod/load_graph_mod.php",
{
submit: 'loadGraph',
serial:serialNum
},
function(data,status){
newDataPoints=data;
});
var chart = new CanvasJS.Chart("chartContainer",
{
interactivityEnabled: true,
zoomEnabled: true,
panEnabled: true,
backgroundColor:"#000",
axisX: { lineThickness: 1,
lineColor: "#333",
interval: 4
,
intervalType: "minutes",
valueFormatString: "h:mm",
labelFontColor: "#777"
},
axisY: { tickColor:"#333",
gridColor: "#222",
lineThickness: 1,
lineColor: "#333",
valueFormatString: "" ,
maximum: 100 },
data: [{
dataPoints : newDataPoints,
markerType: "none",
color: "#9c9a0c",
type: "area",
xValueType: "dateTime"
}]
});
chart.render();
}
我已经尝试过测试它,但直接插入我的服务器响应:
newDataPoints='[{"x":1483648595798,"y":62},{"x":1483648598843,"y":63},{"x":1483648601969,"y":64},{"x":1483648605088,"y":65},{"x":1483648779011,"y":0},{"x":1483648847224,"y":16}]';
这给了我错误:undefined不是一个对象。我尝试过运行JSON.parse并最终出现一个错误,指出无法识别的令牌'<'。
当我将字符串直接粘贴到图表中时,它会起作用:
data: [{
dataPoints : [{"x":1483648595798,"y":62},{"x":1483648598843,"y":63},{"x":1483648601969,"y":64},{"x":1483648605088,"y":65},{"x":1483648779011,"y":0},{"x":1483648847224,"y":16},{"x":1483648860414,"y":17},{"x":1483648862560,"y":18},{"x":1483648865650,"y":19},{"x":1483648868773,"y":20}],
markerType: "none",
color: "#9c9a0c",
type: "area",
xValueType: "dateTime"
}]
所以我试图找出如何转换我从服务器返回的JSON字符串,它在我的图表中正常工作。我很感激任何帮助。感谢。
答案 0 :(得分:1)
如果您尝试从服务器发出简单请求并返回JSON对象,我会执行以下操作
return Observable.merge(okResult, cancelResult).take(1)