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:

我在jQuery中通过Ajax调用返回一个JSON字符串,我想使用jqPlot将该数据输入条形图

我从另一篇堆栈溢出文章中获得了JSON转换代码,但我不明白为什么这不起作用。我的代码:

$.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”}]