清除通知onclick / toggle()

时间:2014-07-11 00:22:07

标签: javascript php mysqli notifications

所以我设置了一个通知系统,除非我清除通知,否则一切都很完美。当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>

1 个答案:

答案 0 :(得分:0)

您遇到的问题是this

  

PHP不加载或执行Javascript。这是一个顺序   执行:

     
      
  1. 用户从您的Web服务器请求数据。
  2.   
  3. 您的网络服务器执行您的PHP脚本,该脚本会输出一些HTML / Javascript。
  4.   
  5. Web服务器将HTML / Javascript发送到用户的浏览器。
  6.   
  7. 用户的浏览器呈现HTML并执行Javascript。所以,是的,PHP会   在执行Javascript之前完成执行。
  8.   

基本上,在您切换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.phpphp/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

对于0事件,您可以执行以下操作(单独的php文件将更新通知以将其设置为读取(可能是< strong> $(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']会将0用户ID )的通知更新为 { {1}} (阅读)。