2016-11-03 5 views
2

私はVisualStudio、C#とNewtonSoft.JsonでChart.jsに取り組んでいます。 有効なJSON文字列を返すクラスを作成しました。ただ、ここでそれを確認: https://jsonformatter.curiousconcept.com/ をJSON-stringがChart.jsのための全体のデータが含まれており、次のようになります。今C#Chart.JsとJSON with NewtonSoft

{ 
    "labels": [ 
     "O", 
     "N", 
     "U", 
     "G" 
    ], 
    "datasets": [ 
     { 
      "label": 2016, 
      "fillColor": "rgba(220, 220, 220, 0.2)", 
      "strokeColor": "rgba(220, 220, 220, 1)", 
      "pointColor": "rgba(220, 220, 220, 1", 
      "pointStrokeColor": "#fff", 
      "pointHighlightFill": "#fff", 
      "pointHighlightStroke": "rgba(220, 220, 220, 1", 
      "data": [ 
       2, 
       0, 
       14, 
       16 
      ] 
     } 
    ] 
} 

私はCSHTMLに小さなAjaxのスクリプトを書きました。私は次のようでしたkvp_stats.cshtmlで

<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajax({ 
      url: 'JSON/kvp_stats.cshtml', 
      dataType: 'json', 
      method: 'POST', 
      success: function (data) { 
       var d = data; 
       alert(d); 
       var ctx = $('#myChart'); 
       var myLineChart = new Chart(ctx, { 
        type: 'line', 
        data: d 
       }) 
      }, 
      error: function() { 
       alert('Etwas klappt nicht!'); 
      } 
     }); 
    }); 
</script> 

:ちょうど書きました: @mm_json.getJSON_Kvp(2016)を返されたJSON-文字列を取得するには、次のようになります。

残念ながら、jquery-ajaxはデータをJSONデータとして受け付けていないようですが、エラー関数に実行されるためです。 dataTypeをhtmlに変更すると、成功するようになります。

データ型がJSON-Stringに正しく応答するようにデータを「エンコード」する必要があると思いますが、どうやってどこですか?

ありがとうございました。

+1

あなたがするようにコントローラを使用する必要があります.cshtmlではなくJSONデータを送り返してください。したがって、あなたのURLは "/ YourControllerName/GetStats"のようなものでなければなりません。これは適切なJSONレスポンスを返送します。 –

答えて

0

私は自分自身に驚いています。 問題を解決する方法を見つけました。

私の場合 kvp_stats.cshtmlでJSONファイル内の文字列の出力は次のようにレンダリングする必要があり

@Html.Raw(mm_json.getJSON_Kvp(2016))代わりにのみ@mm.json.getJSON_Kvp(2016)

関連する問題