清除通知,点击/切换()

Clearing notification onclick/toggle()

本文关键字:切换 点击 通知 清除      更新时间:2023-09-26

所以我设置了一个通知系统,除了我要清除通知外,它都工作得很好。当div打开时,它会清除,但如果我在没有打开div的情况下刷新页面,它也会清除,我不希望在用户打开通知div之前清除通知。我该怎么做呢?

任何能给我指出正确方向的人或帮助,我将不胜感激

谢谢我一直在使用这行代码来清除通知

<?php user_core::clear_notifications($user1_id); ?>

这个代码是OnClick toggle()

<div class="alert_header_item_container">
    <a onclick="toggle('alert_dropdown');">
        <div class="alert_header_item" id="alerts"></div>
        <?
        $sql  = "SELECT * FROM notifications WHERE notification_targetuser=".$user1_id." AND notification_status = '1'" ;
        $chant= mysqli_query($mysqli,$sql);
        $num = mysqli_num_rows($chant);
        if($num==1) {
            echo '<div class="alert_header_item_new" id="alerts"></div>';
        } else {
            echo "";
        }
        ?>
    </a>

您遇到的问题是 this :

PHP不加载或执行Javascript。这是一份订单执行:

  1. 用户从web服务器请求数据。
  2. 你的web服务器执行你的PHP脚本,输出一些HTML/Javascript。
  3. web服务器向用户的浏览器发送HTML/Javascript。
  4. 用户浏览器呈现HTML并执行Javascript。是的,PHP会

基本上你的PHP甚至在你切换onclick事件之前就完成了。


你真正想做的是这样的:

像这样构造你的HTML

<div class="alert_header_item_container">
    <a id="read-notifications">
        <div class="alert_header_item" id="alerts"></div>
    </a>
</div>
现在我们将运行一个ajax请求(当文档加载时)来获取通知
$(document).ready(function(){
    $.ajax({
        type: 'post',
        url: 'notifications.php',
        data: {id: user_id},
    }).success(function(data){
        $('alerts').html(data);
    });
});

它将调用notifications.php,而您将运行php/sql来获取通知:

<?php
$user1_id = $_POST['id']; // then sanitize as needed
$sql = "SELECT * FROM notifications WHERE notification_targetuser=" . $user1_id . " AND notification_status = '1'";
$chant = mysqli_query($mysqli, $sql);
$num = mysqli_num_rows($chant);
if ($num == 1) {
    while($row = mysqli_fetch_assoc()){
        // make notifications markup
    }
   echo MARKUP_FROM_ABOVE
}
?>
对于onclick事件,您可以这样做(到一个单独的php文件,该文件将更新通知以将其设置为read(这可能是 0 ?)):
$(document).on('click', 'a#read-notifications', function(e) {
    $.ajax({
        type: 'post',
        url: 'readnotifications.php',
        data: {id: user_id},
    }).success(function(data) {
        // do what you need to do as notifications were read.
    });
});

readnotifications.php上,您将运行sql query,将$_POST['id'] (用户id)的通知更新为 0 (read)。