這是我的第一篇文章,如果寫得不好請見諒。
這是我的“area_chart.charts.php”,其中陣列是:
$data=array();
foreach ($result as $row) {
$chartDate = date("d/m", strtotime($row['created_at']));
$chartResultats = $row['traitements'];
$chart = array("chartResultats" => $chartResultats,"chartDate" => $chartDate);
array_push($data, $chart);
}
JSON 回應:https : //prnt.sc/1whxygm
我正在嘗試使用 Ajax 檢索資料以將其與 Chart.JS 一起使用,但我這樣做的方式不起作用。有人知道怎么做嗎?
我想要的結果是:
chartResultats: [10, 30, 20]
chartDate: ["16/10", "16/10", "16/10"]
我嘗試像這樣使用 Ajax:
$.ajax({
url:"./inc/charts/area_chart.charts.php",
method:"GET",
success:function(data) {
console.log(data);
chartResultats = data["chartResultats"];
chartDate = data["chartDate"];
// Area Chart
var ctx = document.getElementById("chartResultats");
var myLineChart = new Chart(ctx, {
type: 'line',
data: {
labels: [chartDate],
datasets: [{
data: [chartResulats],
}],
和 Fetch 但它沒有成功。我的圖表讓我感覺欠佳。
你能幫我或澄清我嗎?提前致謝!
uj5u.com熱心網友回復:
您沒有說明如何輸出$data陣列以使其可用于 AJAX。
要輸出$data為 JSON,您必須以以下方式結束您的腳本,
header('Content-Type: application/json;charset=UTF-8');
print json_encode($data);
exit();
然后,您可以使用瀏覽器打開 charts.php 頁面并檢查 JSON 輸出。
但是,要獲得所需的 JSON,您需要類似的東西,
$data=array(
'chartResultats' => array(),
'chartDate' => array(),
);
foreach ($result as $row) {
$data['chartDate'][] = date("d/m", strtotime($row['created_at']));
$data['chartResultats'][] = $row['traitements'];
}
header('Content-Type: application/json;charset=UTF-8');
print json_encode($data);
exit();
輸出應該是這樣的,
{
"chartResultats": [10, 30, 20],
"chartDate": ["16/10", "16/10", "16/10"]
}
在您發布的代碼中,您在每次迭代時創建一個新字典,其中包含一個 chartResultats r 和一個 chartDate d(讓我們稱之為{ r: 1, d: 1 }):
$chart = array("chartResultats" => $chartResultats,"chartDate" => $chartDate);
然后將此物件推送到資料上,獲取此類物件的陣列:
array_push($data, $chart);
所以你的資料是[ { r: 1, d: 1 }, { r: 2, d: 2 }, ... ](一個字典陣列)而不是{ r: [ 1, 2, ... ], d: [ 1, 2, ... ] }(兩個陣列的字典)。
筆記。
我認為這樣,您已經正確格式化了兩個陣列;無需在成功回呼中再次格式化它們。所以,試試
data: {
labels: data["chartDate"], // Not [chartDate]
datasets: [{
data: data["chartResultats"], // Not chartResultats
}],
uj5u.com熱心網友回復:
或者你可以使用回聲
echo json_encode($data);
uj5u.com熱心網友回復:
LSerni 的回答可能會解決這個問題,因為它解決了我認為為解決問題而從前提中遺漏的最重要的事情chart is returning undefined。
除此之外,我看到當你得到回應時,你的$.AJAX.success功能是你只做一個可能會失敗的任務,因為data.chartResultats和data.chartDate是未定義的。而是data同時具有chartResultats和的物件陣列chartDate。
chartResultats = data["chartResultats"];
chartDate = data["chartDate"];
因此,一種產生預期輸出的解決方案(
chartResultats: [10, 30, 20]
chartDate: ["16/10", "16/10", "16/10"]
) 是迭代資料。這是一種實作:
var chartResultats = [];
var chartDate = [];
data.forEach(function(record){
chartResultats.push(record.chartResultats);
chartDate.push(record.chartDate);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324351.html
標籤:javascript php 查询 json 阿贾克斯
上一篇:按月過濾一系列產品
下一篇:將值寫入多個JSON物件
