JSON
和jQuery
都很新,但这是我要做的事情 - 我将JSON
字符串返回到我的网页,作为更大报告模型的一部分在生成报告的同时创建多个图表(使用jqPlot
)。
要练习这些图表,我使用的是以下教程 - Tutorial
以下是本教程中的jQuery
-
jQuery(document).ready(function() {
urlDataJSON = '/Graph/HearthRateDataJSON';
$.getJSON(urlDataJSON, "", function(data) {
var dataLines = [];
var dataLabels = "";
$.each(data, function(entryindex, entry) {
dataLines.push(entry['Serie']);
dataLabels = dataLabels + entry['Name'];
});
Plot(dataLines, dataLabels);
});
});
function Plot(dataLines, dataLabels) {
var line1 = "{ label: 'line1.0' }";
options = {
legend: { show: true },
title: 'Heart rate overview',
axesDefaults: { pad: 1 },
seriesDefaults: { showMarker: false, trendline: { show: false }, lineWidth: 3 },
axes: {
yaxis: { min: 0, autoscale: true, label: 'HR[bpm]', labelRenderer: $.jqplot.CanvasAxisLabelRenderer },
xaxis: { autoscale: true, label: 'Time', labelRenderer: $.jqplot.CanvasAxisLabelRenderer }
}
};
//Data from database is already an array!
plot = $.jqplot('chartdiv', dataLines, options);
plot.redraw(); // gets rid of previous axis tick markers
}
要检索JSON
数据,本教程使用getJson()方法指向链接。我已准备好JSON
字符串传递给jQuery
,例如。
[
{"Name":"Patient","Serie":[[1,4],[2,25],[3,7],[4,14],[5,13]]},
{"Name":"Test","Serie":[[1,13],[2,5],[3,7],[4,20],[5,17]]}
]
在jqPlot
示例中,他们通过以下方式传递硬编码数据:
$(document).ready(function(){
var plot1 = $.jqplot ('chart1', [[3,7,9,1,4,6,8,2,5]]);
});
但是,我自动生成的JSON
字符串具有花括号等。有没有办法在不使用getJson方法的情况下将其传递给jQuery
?
EDIT-Pie Chart Jquery Code
$(document).ready(function () {
var data4 = '[{ "Label": "Car", "Value": 9 },{ "Label": "Bus", "Value": 2 },{ "Label": "Train", "Value": 7 },{ "Label": "Plane", "Value": 8 },{ "Label": "Boat", "Value": 4 }]';
var data = $.parseJSON(data4);
var plot1 = jQuery.jqplot('pieChart', [data],
{
seriesDefaults: {
// Make this a pie chart.
renderer: jQuery.jqplot.PieRenderer,
rendererOptions: {
// Put data labels on the pie slices.
// By default, labels show the percentage of the slice.
showDataLabels: true
}
},
legend: { show: true, location: 'e' }
}
);
});
答案 0 :(得分:3)
使用parseJSON:
var plotline = $.parseJSON(jsonstring);
这将像getJSON一样工作,而不是获取网址,你可以传递你的字符串。
答案 1 :(得分:2)
您还可以使用浏览器的原生JSON.parse
方法
答案 2 :(得分:2)
您可以使用其他答案中提供的任何建议方法对其进行解析,然后再使用它。或者只是简单地使用您拥有的JSON
数据,因为它是一个数组,而{}
中的所有数据都被视为地图。因此,您可以直接使用它们而无需解析as I do in a similar situation shown in the code available here.
在提供的示例中,有JSON
个数据在变量中编码,名为json。
var json = [{
"Name": "Poll Results",
"Serie": [[2, 5, 4], [4, 1, 7], [6, 3, 1], [3, 4, 2]]}];
var dataLines = json[0].Serie;
var title = json[0].Name;
然后在结尾dataLines
变量传递给图表。
修改强>
在使用您提供的样本后,我得出以下结论。 显然,给定的数据不是jQuery的parseJSON方法可以使用的JSON格式。但是当你stringify它有效时。
My sample showing it works fine after application of stringify on the data.
我尝试将你的JSON转换为它的String等价物,将它包装在''
内并且它有效。所以答案很简单,使用parseJSON
方法必须传递一个String而不是任何其他类型的Object。