javascript - 如何使用下拉列表中的值向数据库发送请求?
问题描述
所以我有一个下拉列表,它使用选择我所有可用名称的 sql 语句预填充(在页面加载时)。我想要做的是当我点击发送按钮时,它应该取回与我选择的名称相关的所有数据。当我谈到 ajax 请求时,我真的是一个菜鸟,我非常感谢你的帮助。现在我取回数据,但我不确定如何在数据中“搜索”我选择的名称。到目前为止我所拥有的:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js" integrity="sha512-d9xgZrVZpmmQlfonhQUvTR7lMPtO7NkZMkA0ABN3PHCbKA5nqylQ/yWlFAyY6hYgdF1Qh6nYiuADWwKB4C2WSw==" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script>
let dropdownMenu = document.getElementById('selected_project');
function getFilteredData() {
$.ajax({
type: 'POST',
url: 'http://localhost/solid2/filtered_data.php',
success: function (data) {
console.log(data);
let name = [];
let ertrag = [];
let kollektrofläche = [];
let jahr = [];
let monat = [];
for (let i in data) {
name.push(data[i].Name);
kollektrofläche.push(data[i].Kollektorfläche);
ertrag.push(data[i].Ertrag);
jahr.push(data[i].Jahr);
monat.push(data[i].Monat);
}
let selectedProjectName = dropdownMenu.options[dropdownMenu.selectedIndex].text;
console.log(selectedProjectName);
let ctx = document.getElementById('yearly_chart');
let yearly_solar_energy = new Chart(ctx, {
type: 'bar',
// The data for our dataset
data: {
labels: selectedProjectName,
// Information about the dataset
datasets: [{
label: "Monatliche Solarerträge [kWh/Monat]",
backgroundColor: 'orange',
borderColor: 'royalblue',
data: selectedProjectName
}]
}
}
})
}
});
}
function getProjectName() {
}
</script>
</head>
<body>
<div>
<select id=selected_project name="selected_project">
<?php
include 'get_data.php';
foreach ($result as $row) {
echo "<option value=$row[ID]>$row[Name]</option>";
}
?>
</select>
<button onclick="getFilteredData()">Send</button>
</div>
<canvas id="yearly_chart"></canvas>
</body>
</html>
这是filtered_data.php
<?php
include 'db_connect.php';
$stmt = $pdo->prepare("
SELECT monitoring_database.systems.display_name AS Name,
monitoring_database.systems.collector_area AS Kollektorfläche,
ROUND(AVG(monitoring_database.heat_meter_values.value))AS Ertrag,
YEAR(monitoring_database.heat_meter_values.timestamp) AS Jahr,
MONTHNAME(monitoring_database.heat_meter_values.timestamp) AS Monat
FROM monitoring_database.systems
INNER JOIN monitoring_database.heat_meter
ON monitoring_database.systems.id = monitoring_database.heat_meter.system_id
INNER JOIN monitoring_database.heat_meter_values
ON monitoring_database.heat_meter.id = monitoring_database.heat_meter_values.heat_meter_id
GROUP BY Name, Jahr
");
$stmt->execute();
$result = $stmt->fetchAll();
$data = array();
foreach ($result as $row) {
$data[] = $row;
}
print json_encode($data);
解决方案
推荐阅读
- node.js - Nodemailer 无法正常工作 使用 Node 和 Express 的完整 React 和 Redux 项目
- ios - JSON ios不解析
- android - 通过套接字进行多次读写
- swift - 仅当在 `tableView (_: didSelectRowAt:)` 上调用 performSegue 时,才会出现“没有标识符的 segue”错误
- c# - 使用光线投射命中信息使游戏对象居中
- c# - 如何在c#中检测变量变化并获取变量的值
- video-streaming - SPICE 服务器在视频流检测中使用什么算法?
- javascript - 使用 react-native-offline 手动拦截 react-native 中的调度
- angular-material - 给出 HEX 颜色代码时如何生成颜色数组作为材料颜色生成器
- android - 如何使用以 TypeScript for Firebase Realtime 数据库编写的云函数从 onCreate 触发之外的节点获取数据?