2013-08-20 97 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