如何通过 Button 事件,发送 AJAX 请求,到同一页面并为 PHP 捕获事件[PHP]

How to via Button events, send AJAX requests,to the same page and for PHP catch the events[PHP]

提问人:Roman_Coding 提问时间:10/21/2023 最后编辑:Roman_Coding 更新时间:10/21/2023 访问量:29

问:

我确实有一个应用程序,其中月份应通过所选按钮显示 - 日历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 filemonth-navigation menu


它应该如何工作

  • 月份的选择应该通过 来完成,因此 在 中应该注册一个 ,然后根据所选的月份应该重新生成 .month-buttonsbuttonsmenuclickcalendar

这个想法:

  • 当单击一个月时,应发送一个,将一些数据插入到变量中buttonAJAX Request$_POSTPHP

  • 更改后的 变量将触发一个代码$_POSTPHP

  • 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.phpcalendar

<?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,以便以后可以使用?

此致敬意 罗马

PHP HTML CSS AJAX 事件

评论

1赞 ADyson 10/21/2023
success: function (response)是空的,所以即使 php 代码执行了,你也没有对结果做任何事情,你需要一些 JS 来更新你的页面

答: 暂无答案