javascript - 在 Javascript 中调用 *reusable* PHP 代码
问题描述
目前我有一个 index.php 文件,其中包含 PHP 和 Javascript 代码。
PHP 代码访问 SQLite 数据库,并将数据放入两个数组中,然后我在 Javascript 代码中使用它们来填充条形图。
我现在希望在 Javascript 中随时调用 PHP 代码,但不知道正确的方法,并且我对示例的尝试失败了。
另外我认为理想情况下我需要更改 PHP 代码,以便它返回数组,以便我可以使用它们进行比较等。
这是我第一次涉足 PHP 和 Javascript。
代码:
<?php
$db = new SQLite3('/var/www/html/newdb.db');
$result = ($db->query('SELECT * FROM NUMBERS'));
$avg_stack = array();
$name_stack = array();
while ($res = $result->fetchArray(SQLITE3_ASSOC)){
$avg = $res["AVG"];
$name = $res["NAME"];
array_push($avg_stack, $avg);
array_push($name_stack, $name);
}
$db->close();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.c
ss">
<title>My Chart.js Chart</title>
</head>
<body>
<div id="demo" class="container">
<canvas id="myChart"></canvas>
<input type="button" value="Update Table" onclick="updatetable()">
</div>
<script>
var data_array = [];
var name_array = [];
var colour_array = [];
var dynamicColour = function() {
var r = Math.floor(Math.random() * 255);
var g = Math.floor(Math.random() * 255);
var b = Math.floor(Math.random() * 255);
return "rgb(" + r + "," + g + "," + b + ")";
};
var massPopChart = Chart;
function createchart() {
data_array = [<?php echo '"'.implode('","', $avg_stack).'"' ?>];
name_array = [<?php echo '"'.implode('","', $name_stack).'"' ?>];
for (var i in data_array) {
colour_array.push(dynamicColour());
}
let myChart = document.getElementById('myChart').getContext('2d');
massPopChart = new Chart(myChart, {
type:'bar',
data:{
labels:name_array, // This to be replaced by return result of PHP
datasets:[{
label:'Population',
data:data_array, // This to be replaced by return result of PHP
backgroundColor:colour_array,
borderWidth:1,
borderColor:'#777',
hoverBorderWidth:3,
hoverBorderColor:'#000'
}]
},
options:{
}
});
}
function updatetable() {
window.location.reload(true);
setInterval(function(){
// HERE I WANT TO RUN THE PHP CODE AGAIN
var newposition = data_array.length;
data_array.push(Math.floor(Math.random() * 700000) + 5000);
colour_array.push(dynamicColour());
massPopChart.data.datasets[0].data[newposition] = data_array[newposition];
massPopChart.data.labels[newposition] = "Newly Added";
massPopChart.update();
}, 3000);
}
createchart();
</script>
</body>
</html>
解决方案
推荐阅读
- python - 使用 scapy python 3 在 Windows 10 中进行 ARP 欺骗和数据包嗅探器
- bert-language-model - 如何在 HuggingFace 中获取 Bert 模型的中间层?
- android - 刷新我构建的内核后,Android 卡在启动(在 logcat 中等待服务 '/dev/binder' 上的服务 'media.audio_policy'...)
- node.js - 我正在使用 Draft.js 在 Nodejs、React.js 中创建帖子表单,但出现“markdown”元素或其他内容的类型错误
- php - 无法加载动态库'curl'(试过:c:/wamp64/bin/php/php7.2.34/ext/curl(找不到指定的模块。)
- matrix-multiplication - 没有动态规划的矩阵链的最佳括号
- twitter-bootstrap - Bootstrap 5 中的变量覆盖顺序
- python - 使用 BeautifulSoup 从抓取的数据创建数据帧时出现数组长度错误
- r - 使用鼠标时的错误消息:r[, j] 中的错误:下标超出范围
- reactjs - 将异步数据(道具)传递给子组件?[反应]