2017-09-12 10 views
0

私のウェブサイト上のグラフのデータを入力する際に​​問題があります。ここでは、データがクエリに前のように見えたものです:jsonデータシートにjsonオブジェクトのpythonリストにスタック

私は私の見解で
var data2 = [ 
      [gd(2012, 1, 1), 7], [gd(2012, 1, 2), 6], [gd(2012, 1, 3), 4], [gd(2012, 1, 4), 8], 
      [gd(2012, 1, 5), 9], [gd(2012, 1, 6), 7], [gd(2012, 1, 7), 5], [gd(2012, 1, 8), 4], 
      [gd(2012, 1, 9), 7], [gd(2012, 1, 10), 8], [gd(2012, 1, 11), 9], [gd(2012, 1, 12), 6], 
      [gd(2012, 1, 13), 4], [gd(2012, 1, 14), 5], [gd(2012, 1, 15), 11], [gd(2012, 1, 16), 8], 
      [gd(2012, 1, 17), 8], [gd(2012, 1, 18), 11], [gd(2012, 1, 19), 11], [gd(2012, 1, 20), 6], 
      [gd(2012, 1, 21), 6], [gd(2012, 1, 22), 8], [gd(2012, 1, 23), 11], [gd(2012, 1, 24), 13], 
      [gd(2012, 1, 25), 7], [gd(2012, 1, 26), 9], [gd(2012, 1, 27), 9], [gd(2012, 1, 28), 8], 
      [gd(2012, 1, 29), 5], [gd(2012, 1, 30), 8], [gd(2012, 1, 31), 25] 
     ]; 

return HttpResponse(json.dumps({'data': data}), content_type="application/json", status=200) 

だけリターン前からの印刷は、次のとおりです。

でしかし
Data: [[1505175303.4467661, 1], [1505175318.294838, 1], [1505175332.872905, 1], [1505175348.181136, 1]] 

アラート(response.data)私は得る:

1505175303.4467661, 1, 1505175318.294838, 1, 1505175332.872905, 1, 1505175348.181136, 

なぜ私の配列を文字列に変換するのですか?

これが何か変更されたら、私はこれをajaxコールでやっていますか?

敬具、

デニス・エンジェル

EDIT:

ここ

は前ギガバイト機能がやったことです:

function gd(year, month, day) { 
      return new Date(year, month - 1, day).getTime(); 
     } 
+0

おそらくあなたは 'HttpResponse'にJSONシリアライズされた文字列を渡す必要はありません、何でもつまり、あなたは、シリアル化されていないpythonオブジェクトを渡すと仮定します: '{'data':data}' –

答えて

0

alert(response.data)がしようとすると、表示用のデータをフォーマットするために何もしません、それは与えられたオブジェクトのtoString()を呼び出すだけです。通常は非常に初歩的な文字列を返します。構造はプレゼンテーションで失われますが、基礎をなすオブジェクトは元のままです。

alert(response.data)の代わりに、console.log(response.data)またはalert(response.data[0][0])を試して、データ構造が残っていることを確認できます。または、返されたオブジェクトを反復処理するかもしれません。 JavaScriptコンソールでこれを試してください。

data = [[1505175303.4467661, 1], [1505175318.294838, 1], [1505175332.872905, 1], [1505175348.181136, 1]]; 

alert(data); 
alert(data[0]); 
alert(data[0][0]); 
console.log(data); 

data.forEach(function(element) { 
     alert(element[0] + ': ' + element[1]); 
    }); 

最初alert()しかし、後続の呼び出しは、アレイが依然として存在していることを示す必要があり、構造体の見かけの損失を示すべきです。また


あなたはジャンゴを使用していることから、私は思うのではなく、HttpResponseを使用し、JsonResponseを使用します。

from django.http import JsonResponse 

return JsonResponse({'data': data}) 
+0

うわー、ありがとう!質問、JsonResponseでステータスを渡す必要がありますか? –

+0

アラートがtoString()関数であることを説明してくれてありがとうございます。迅速なconsole.logやjavascriptコンソールでデータを作成することでそれが証明されているはずです。それは私がconsole.logをもっと使うのに役立つだろう。 –

関連する問題