jqPlot和JSON格式的数据
我在jQuery中通过Ajax调用返回一个JSON字符串,我想使用jqPlot将该数据输入条形图 我从另一篇堆栈溢出文章中获得了JSON转换代码,但我不明白为什么这不起作用。我的代码:jqPlot和JSON格式的数据,json,jquery,jqplot,Json,Jquery,Jqplot,我在jQuery中通过Ajax调用返回一个JSON字符串,我想使用jqPlot将该数据输入条形图 我从另一篇堆栈溢出文章中获得了JSON转换代码,但我不明白为什么这不起作用。我的代码: $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", data: JSON.stringify(DTO), //JSON.stringify(AnDParms), combined, url:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(DTO), //JSON.stringify(AnDParms), combined,
url: "GetAdmitsDischarges.asmx/GetAandD",
dataType: "json",
success: function (data) {
//do chart stuff here.
var line1 = [];
for (var prop_name in data.d) {
line1.push([prop_name, data[prop_name]])
}
var ticks = ['Admits', 'Discharges'];
var plot1 = $.jqplot('chartdiv', [line1], {
title: 'Admits & Discharges',
series: [{ renderer: $.jqplot.BarRenderer}],
axesDefaults: {
tickRenderer: $.jqplot.CanvasAxisTickRenderer
},
axes: {
xaxis: {
renderer: $.jqplot.CategoryAxisRenderer
}
}
});
//to prove the flow is working...
//alert("Data: " + data.d);
}, //end of success
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus + ' ' + errorThrown + ' ' + XMLHttpRequest);
} //end of error
}); //end of ajax call
在Firebug中,line1的值为(从0到32):
[“0”,未定义],“1”,未定义],…[“31”,未定义],“32”,
未定义]]
而数据的价值是:
对象{d=“{”承认”:“35”,“解除”:“36”}
感谢您提供的任何帮助…问题在于您的JSON结构:
{
"Admits": "35",
"Discharges": "36"
}
您提供的是JSON对象,但jqplot需要数组:
[
["Admits", 35],
["Discharges", 36]
]
在Encosia.com的Dave Ward的帮助下,我终于找到了答案……如果你还没有查看他的博客,现在就直接去那里吧……它非常适合你所有的.Net/jQuery需求 以下是我的javascript:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(DTO),
url: "GetAdmitsDischarges.asmx/GetAandD",
dataType: "json",
success: function (data) {
var jqPlotData = $.map(data.d, function (value, key) {
if (key != "__type") {
return [value]; //was key, value
}
});
var ticks = ['Admits', 'Discharges'];
var plot1 = $.jqplot('chartdiv', [jqPlotData], {
title: 'Admits & Discharges',
seriesDefaults: {
renderer: $.jqplot.BarRenderer,
rendererOptions: { varyBarColor: true },
pointLabels: { show: true }
},
axes: {
xaxis: {
renderer: $.jqplot.CategoryAxisRenderer,
ticks: ticks
}
},
highlighter: { show: false }
});
此外,我从web服务中删除了JSON序列化,并返回了该对象。希望这能帮助其他人。有什么想法可以改变这一点吗?是否有一个搜索和替换函数可以用于JSON字符串,将“:”改为“,”和“,”改为“],[”,并将外部“{”改为“[”?我希望它能够处理更大的JSON字符串,因为我计划在下游创建更复杂的图表…这个简单的图表只是一个概念证明…谢谢。你在服务中改变这个,改变你对JSON数据的编码方式我们可以让jqPlot接受JSON字符串吗?:)我在服务中使用了对象,所以更改将是一项艰巨的任务…如果我不能在javascript/jquery中完成更改…除非你想破解他们的源代码,如果你不想在服务器级别进行更改,那么就在你的js中完成更改,谢谢,我会在javascript中尝试。为什么会得到“-1”?这就是解决方案。你能告诉我如何在“序列”中使用json返回的数据吗?例如,使用从数据返回的接收和释放作为序列类似的序列:some_数组和some_数组=[{label:“json returned data},{label:“json returned data”}]