2013-08-20 57 views
0

我在jQuery中返回一个带有Ajax调用的JSON字符串,我想用jqPlot将这些数据转换为条形图。jqPlot和JSON格式化数据

我从另一个Stack-Overflow文章中获得了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 

在萤火虫,LINE1的值(从0到32):

[[ “0” 时,未定义],[ “1”,未定义] ,. .. [ “31”,未定义],[ “32”, 未定义]]

虽然数据的值是:

对象{d = “{” 承认 “:” 35 “ ”放电“:” 36 “}”

感谢您可以提供任何帮助......

回答

0

我终于有Encosia.com ......戴夫病房的帮助了它,如果你还没有签出他的博客,直头有现在.. 。它非常适合所有的.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 } 

      }); 

另外,我从我的网络服务中删除JSON序列化,只是返回的对象。希望这会帮助其他人。

+0

为什么这会得到“-1”?这是解决方案。 – BradAtCC

+0

你能告诉我如何在“系列”中使用json返回的数据吗?例如使用从数据返回的允许和释放作为系列 – wingskush

+0

类似 系列:some_array 和some_array = [{label:“json返回的数据},{label:”json返回的数据“}] – wingskush

1

的问题是你的JSON结构:

{ 
    "Admits": "35", 
    "Discharges": "36" 
} 

您提供一个JSON对象,但jqplot需要阵列代替:

[ 
    ["Admits", 35], 
    ["Discharges", 36] 
] 
+0

任何想法如何改变这一点?是否有一个搜索和替换功能,我可以使用JSON字符串,将“:”变为“,”和“,”变为“],[”,外部“{”变为“[[ ?我希望这能够处理更大的JSON字符串,因为我打算创建更复杂的下游图表......这个简单的图表只是一个概念验证......谢谢。 – BradAtCC

+0

你在你的服务中改变这个,改变你编码你的json数据的方式 – meda

+0

我们可以让jqPlot接受JSON字符串吗? :)我用我的服务中的对象,所以使这种变化将是一个大型的承诺...如果我不能在javascript/jquery中做... – BradAtCC