我想实现一个函数,允许用户点击单元格并让它动态更新并将值添加到数据库中.它正在按预期工作,但如果不刷新页面或使用location. relief(),我无法让它工作

我想用类= .submitChange(靠近底部)更改单元格

<tr>
    <th scope='row'><?php echo $row['lastname'] . ", " . $row['firstname']; ?></th>
    <td><?php echo $row['phone']; ?></td>
    <td><?php echo $row['usertype']; ?></td>
    <?php
    foreach ($events_array as $event) { 
        $event_date = $event['date'];
        $employee_id = $row['id'];
        
        // Check if employee has a vacation day
        $vacation_day = false;
        foreach ($vacation_dates[$employee_id] as $vacation_date) {
            if ($vacation_date == $event_date) {
                $vacation_day = true;
                break; 
            }
        }
        
        // Check if employee is working that day
        $sql_check_worker = "SELECT * FROM Workers WHERE employee={$row['id']} AND event={$event['id']}";
        $result_check_worker = $smeConn->query($sql_check_worker);
        if ($result_check_worker->num_rows > 0) { // displays cell color if employee is working or not
            $serverSum++;
            $cellColorId = 'green-cell';
        } else {
            $cellColorId = 'yellow-cell';
        }
        ?>
        <?php if ($vacation_day) { 
            echo "<td class='vacation'></td>"; 
        } else {
            echo "<td id='$cellColorId' class='submitChange' data-eventid='{$event['id']}' data-employeeid='{$row['id']}'></td>";
        }
        ?>
    <?php } ?>
    <td><?php echo $serverSum; ?></td>
</tr>

这是我的jchar:

$(document).ready(function() {
    $('.submitChange').click(function() {
        $cellId = $(this).attr('id');
        $eventId = $(this).data('eventid');
        $employeeId = $(this).data('employeeid');
        if ($cellId === 'green-cell') {
            $action = 'remove';
        } else {
            $action = 'add';
        }
        console.log($cellId)
        $.ajax({
            url:"includes/ajax_request.php",
            method:"POST",
            data:{
                action:$action,
                eventId:$eventId,
                employeeId:$employeeId
            },
            success:function(response){
                if (response === 'removed') {
                    $(this).removeAttr('id').attr('id', 'yellow-cell'); // Remove old ID and set new one
                    alert("Employee has been removed from event!");
                } else {
                    $(this).removeAttr('id').attr('id', 'green-cell'); // Remove old ID and set new one
                    alert("Employee has been added to event!");
                }  
            }
        })
    })
});

如果相关,这是我的脚本:

<?php

include("connect.php");
$action = $_POST['action'];
$eventId = $_POST['eventId'];
$employeeId = $_POST['employeeId'];

if ($action === 'remove') {
    $sql = "DELETE FROM Workers WHERE event = $eventId AND employee = $employeeId";
    $smeConn->query($sql);
    echo "removed";
} else {
    $sql = "INSERT INTO Workers (event, employee) VALUES ($eventId, $employeeId)";
    $smeConn->query($sql);
    echo "added";
}

?>

该功能正在按预期工作;数据正在添加到我的数据库中,并且单元格正在更改 colored颜色 ,但是,它只有在我刷新页面后才能工作.

推荐答案

正如@ grumpycooton提到的那样,this并不意味着您在这种情况下所期望的.

请try 这样的操作:

$(document).ready(function () {
$('.submitChange').click(function (ev) {
    ev.stopPropagation();

    var cell = ev.target;
    $cellId = $(cell).attr('id');
    $eventId = $(cell).data('eventid');
    $employeeId = $(cell).data('employeeid');
    if ($cellId === 'green-cell') {
        $action = 'remove';
    } else {
        $action = 'add';
    }
    console.log($cellId)
    $.ajax({
        url: "includes/ajax_request.php",
        method: "POST",
        data: {
            action: $action,
            eventId: $eventId,
            employeeId: $employeeId
        },
        success: function (response) {
            if (response === 'removed') {
                $(cell).removeAttr('id').attr('id', 'yellow-cell'); // Remove old ID and set new one
                alert("Employee has been removed from event!");
            } else {
                $(cell).removeAttr('id').attr('id', 'green-cell'); // Remove old ID and set new one
                alert("Employee has been added to event!");
            }
        }
    })
  })
});

Php相关问答推荐

过滤WooCommerce管理员订单列表(+HPOS)中包含其作者产品的订单

一列必须指定多个变量的Laravel查询

WooCommerce产品按特定元数据的自定义数字排序选项

向在添加到购物车上动态创建的WooCommerce产品添加发货类别

无法在Laravel/Vue停靠容器中启动MySQL

删除了数组中的值,而不是多个数组

如何使用PHP从TXM(XML)标记中读取特定属性

按类别层次 struct 过滤 Laravel 集合

Symfony:从控制器内部调用自定义命令

如何在 PHP laravel 中将图像的透明背景转换为白色?

计算添加到购物车的点击次数并将其显示在 WooCommerce 管理产品列表中

根据所选付款方式启用/禁用 WooCommerce 所需的 checkout 字段

如何在 PHP 中对具有相同数组值的值求和

Laravel Eloquent:复杂的多对多关系以及缺失关系的默认值

Woocommerce注册中的自定义复选框验证错误提示问题

在这个 Laravel 应用中,如何仅显示已批准的 comments 回复?

php如何删除括号内的百分比值

WordPress 函数 get_post(post_id) 是否查询数据库?

如何通过路由传递变量

如何使用先前 SELECT 的结果来 SELECT SQL 数据