質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

5719閲覧

ajaxを使いグラフを再描画できない

mizutama72

総合スコア31

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

2クリップ

投稿2016/03/19 02:22

laravelで開発をしております。
ajaxでとってきた値を、Chart.jsに渡し、グラフを再描画しようとしていますが、真っ白になり何も表示されません。

まず、画面読み込み時では、
$(document).ready(function(){
var doughnutData = [{!! $data['graph2'] !!}];
var myDoughnut = new Chart(document.getElementById("doughnut").getContext("2d")).Doughnut(doughnutData);
});

として、ドーナツグラフが表示されます。

そして、okBtnをクリックすると、選択データが指定urlにpostされ、データをとってきます。
console.logに表示すると、確かにデータは取れています。
ですが、画面にはドーナツグラフが表示されません。
$('.okBtn').on('click', function(){
var url = $('#actionUrl').text();
var column = $('[name=column]:checked').val();
var get_data="";
$.ajax({
type: "POST",
url: url,
data: {"column":column},
success: function(data, dataType)
{
get_data = data;
console.log(get_data);
var doughnutData = [get_data];
var myDoughnut = new Chart(document.getElementById("doughnut").getContext("2d")).Doughnut(doughnutData);
}
});
});

試しに、
var doughnutData = [get_data];
上記のget_data部分をconsole.logで表示された値に変更すると、グラフは表示されます。
ただ、グラフの上にマウスポインタが乗ると、画面読み込み時のグラフが一瞬表示されたりするので、挙動はおかしいのですが。。。

そもそもグラフを描画する部分が二つあることがおかしいのでしょうか?
エラーも出ないので、途方に暮れています。
有識者の方、どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

ajaxでとってくる値をデータの羅列(1,2,3,5:10,20,30...)などの形にし、jquery側で再形成し、Chart.jsに渡すことで動くようになりました。

jquery

1 $.ajax({ 2 type: "POST", 3 url: url, 4 data: {"column":column,"type":type}, 5 success: function(data) 6 { 7 //alert(data); 8 get_data = data; 9 var colors = ["#1d2b38","#2b4055","#385572","#476a8d","#5580aa","#7295b8","#8daac7","#aabfd5","#c7d5e2","#e2eaf1"]; 10 var datas = get_data.split(":"); 11 var vals = datas[0].split(","); 12 var labels = datas[1].split(","); 13 $('#chart_view').html("<canvas id='doughnut' height='200' width='200'></canvas>"); 14 var doughnutData = []; 15 for (var i=0;i<vals.length;i++){ 16 doughnutData.push({label:labels[i],value:vals[i],color:colors[i]}); 17 } 18 var myDoughnut = new Chart(document.getElementById("doughnut").getContext("2d")).Doughnut(doughnutData); 19 } 20 });

投稿2016/03/22 23:57

mizutama72

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Javascript

1console.log(get_data); 2var doughnutData = [get_data];

console.logで出力したデータは

[aaa:123,bbb:345]みたいになってませんか?
なっているようなら、

Javascript

1var doughnutData = get_data;

でよさそうだけど。

投稿2016/03/19 05:10

shi_ue

総合スコア4437

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mizutama72

2016/03/19 10:57

shi_ueさま ご回答ありがとうございます。 console.logで出力したデータは、 {label:'43.9-53.46',value:7.1,color:'#1d2b38'},{label:'53.46-63.02',value:2.4,color:'#2b4055'},... という文字列です。 var doughnutData = get_data; とやってみましたが、グラフは表示されず、エラーも表示されませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問