HighChartsを参照して配列にJSONエントリを設定しようとしています。Jquery POSTに配列が設定されていません
JSONオブジェクトの1つに手動で入力され、PHPポストで動的に入力する必要があります。 データを配列にプッシュするためにコールバック関数を使用しようとしましたが、データがプッシュされないようです。
私はPHP Postからデータが返ってくることを確認することができます。 それは、配列に値を設定したようですが、Jquery POST関数が完了すると、配列が空になったように見えます。
また、POSTの内部にconsole.tableコールがあります。これは実際に配列を正しく印刷します。
下記のコードから、投稿の直後にconsole.table()コール を使用していて空であることがわかります。 しかし、私は手動で次回にプッシュした後、データ配列には手動JSON配列プッシュのためのデータが含まれています。
アイデア?
/* INITIAL ARRAY **************************************/
data_array = [];
var colors = Highcharts.getOptions().colors;
categories = ['Dynamic', 'Manual'];
/* FUNCTION TO PUSH TO ARRAY *****************************/
function push_toarray(cats,counts) {
data_array.push({
y: 10.38,
color: colors[1],
drilldown: {
name: 'Dynamically Populated',
categories: [cats],
data: [counts],
color: colors[1]
}
});
}
/* PHP AND FOR LOOP FOR GETTING DATA *********************************************/
$.post("php/dt_charts.php")
.done(function(data) {
var obj = jQuery.parseJSON(data);
// To verify the values are returned
console.log(obj.fe_det_name);
console.log(obj.fe_det_count);
push_toarray(obj.fe_det_name, obj.fe_det_count);
console.table(data_array); // This prints the array correctly with both JSON objects inside
});
//console.table(data_array); // This prints no data.
/* MANUAL DATA ARRAY *********************************************/
data_array.push({
y: 10.38,
color: colors[1],
drilldown: {
name: 'Manually Populated',
categories: ['Firefox v31', 'Firefox v32', 'Firefox v33', 'Firefox v35', 'Firefox v36', 'Firefox v37', 'Firefox v38'],
data: [0.33, 0.15, 0.22, 1.27, 2.76, 2.32, 2.31, 1.02],
color: colors[1]
}
})
console.table(data_array); // This prints only the manually populated array values
問題は、内部に「完了」機能があり、オブジェクトにデータが入力されていることです。しかし、その機能を残すと、すべての変更が消えて空になりますか? – user4035
問題はjavascriptが非同期なので、投稿を送信した後に配列にアクセスしようとしたときに本当に嫌なことは、あなたのログステートメントの後に投稿が実行されていることです。空のdata_arrayを取得する理由 – MoniXx
ソリューションはコードを書くことですdoneコールバックの中で、実際にあなたの投稿から返された値を使用することができます。 – MoniXx