提问人:Roman_Coding 提问时间:10/21/2023 最后编辑:Roman_Coding 更新时间:10/21/2023 访问量:29
如何通过 Button 事件,发送 AJAX 请求,到同一页面并为 PHP 捕获事件[PHP]
How to via Button events, send AJAX requests,to the same page and for PHP catch the events[PHP]
问:
我确实有一个应用程序,其中月份应通过所选按钮显示 - 日历。Calendar
日历的很大一部分是由 https://codeshack.io/event-calendar-php/ 开发的,它位于 .PHP
它以这种方式包含在 HTML 页面中:
索引.php
<?php
include 'Calendar.php';
$calendar = new Calendar('2023-05-12');
$calendar->add_event('Birthday', '2023-05-03', 1, 'green');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Event Calendar</title>
<link href="style.css" rel="stylesheet" type="text/css">
<link href="calendar.css" rel="stylesheet" type="text/css">
</head>
<body>
<nav class="navtop">
<div>
<h1>Event Calendar</h1>
</div>
</nav>
<div class="content home">
<?=$calendar?>
</div>
</body>
</html>
为了简单起见,还添加了渲染的 a,如下所示: 菜单php calendar file
month-navigation menu
它应该如何工作:
- 月份的选择应该通过 来完成,因此 在 中应该注册一个 ,然后根据所选的月份应该重新生成 .
month-buttons
buttons
menu
click
calendar
这个想法:
当单击一个月时,应发送一个,将一些数据插入到变量中
button
AJAX Request
$_POST
PHP
更改后的 变量将触发一个代码
$_POST
PHP
PHP
然后,代码应重新生成给定数据。calendar
实现:
开头更改为:file
function generateCalendar ($date) {
$calendar = new Calendar($date);
$calendar->add_event('Birthday', '2023-05-03', 1, 'green');
}
该脚本用于检查是否单击了某个月,该脚本已添加到index.php
<script>
$(".btn-outline-dark").click(function(oEvent) {
const sMonth = oEvent.currentTarget.attributes["data-month"].value;
$.ajax({
type: "POST",
url: "index.php",
data: {month: sMonth},
success: function (response) {
// console.log(response);
},
error: function (error) {
// console.log(error);
}
});
// console.log("Hallo Welt");
})
</script>
以下内容也被添加到 中,以重新生成 .index.php
calendar
<?php
print_r($_POST);
if (isset($_POST["month"])) {
generateCalendar($_POST["month"]);
}
?>
问题
Eventho,请求已发送并成功,,未执行
isset($_POST["month"])
网络选项卡显示已发送 ajax 请求,以及提到的新页面确实执行了上面提到的 php 代码。
index.php
但是,当前页面仍为空。
我做了什么,解决这个问题:
- 将变量另存为 cookie
if (isset($_POST['month'])) {
setcookie('month', $_POST['month'], time() + 2 * 24 * 60 * 60);
}
不起作用
问题:
- 如何使用PHP即时捕获请求后事件?或者如何保存cookie,以便以后可以使用?
此致敬意 罗马
答: 暂无答案
评论
success: function (response)
是空的,所以即使 php 代码执行了,你也没有对结果做任何事情,你需要一些 JS 来更新你的页面