Файл сеанса не обновляется на родительской странице AJAX - PullRequest
0 голосов
/ 04 марта 2019

На index.php я запускаю следующий AJAX для получения обновленных уведомлений:

function updateNotifications() {

    var user_id = "<?php echo $user_id; ?>";
    var phpSessionId = "<?php echo session_id(); ?>";   
    var number_of_previous_notifications = "<?php echo $_SESSION['number_of_notifications']; ?>";

alert(number_of_previous_notifications);

  $.ajax({
      url : "notification_refresh.php",
      type : "POST",
      data : { "user_id": user_id, "session_id": phpSessionId },
      success : 
       function(data) {

         var response = $.parseJSON(data);

         if (response.messages > 0) {
             $('.inactive-notification-img').hide();
             $('.notification-img').show()
             $('.notification-number').html(response.messages).addClass('blink_me');


         }
         else {
                  $('.notification-img').hide();
              $('.inactive-notification-img').show();
              $('.notification-number').html('').removeClass('blink_me');
         }
     }  

   });
   setTimeout('updateNotifications()', 15000); // Every 15 seconds.


}

    updateNotifications();

На странице, которую вызывает AJAX, вот код ...

if (isset($_POST['session_id'])) { session_id($_POST['session_id']); }
session_start();

include_once('../../inc/database.php');
include_once('../../inc/session.php');


if (
(isset($_POST['user_id'])) && (is_numeric($_POST['user_id'])) 
){


$notif_user_id = $_POST['user_id'];



         $search_notif_query = $db1q->query("SELECT id FROM User_Notifications WHERE FIND_IN_SET('$notif_user_id', to_user) AND status = '0'");

         $response = ['messages' => $search_notif_query->num_rows];

         $_SESSION['number_of_notifications'] = $search_notif_query->num_rows;


         echo json_encode( $response );



}

Как вы можете сказать, в функции index.php я предупреждаю number_of_previous_notifications, чтобы увидеть, если он когда-либо изменится.И я позволяю функции запускаться 4-5 раз, а number_of_previous_notifications НИКОГДА не обновляется.

Это говорит о том, что сеанс ['number_of_notifications'] не обновляется на странице запроса Ajax.

Есть мысли?

1 Ответ

0 голосов
/ 05 марта 2019

Хорошо ... Вот что я предлагаю вам попробовать, чтобы воспроизвести звук, если хранимая переменная, такая как old_notification_value, выше, чем ее предыдущее значение:

var old_notification_value = 0;  // A variable to store the notification amount over time

function updateNotifications() {

  var user_id = "<?php echo $user_id; ?>";
  var phpSessionId = "<?php echo session_id(); ?>";
  var number_of_previous_notifications = "<?php echo $_SESSION['number_of_notifications']; ?>";

  alert(number_of_previous_notifications);

  $.ajax({
    url : "notification_refresh.php",
    type : "POST",
    data : { "user_id": user_id, "session_id": phpSessionId },
    success :
    function(data) {

      var response = $.parseJSON(data);

      if (response.messages > 0) {
        $('.inactive-notification-img').hide();
        $('.notification-img').show()
        $('.notification-number').html(response.messages).addClass('blink_me');
      }
      else {
        $('.notification-img').hide();
        $('.inactive-notification-img').show();
        $('.notification-number').html('').removeClass('blink_me');
      }

      if(response.messages > old_notification_value){   // Here you handle the sound notification.
        // Update the old_notification_value variable!
        old_notification_value = response.messages;

        // Then play a sound here!
      }

    }

  });
  setTimeout('updateNotifications()', 15000); // Every 15 seconds.
}

Вы пытались обработать этоиз переменной $_session ... Но дело в том, что связь между серверной и клиентской сторонами после создания и отправки клиенту HTML-кода отсутствует.Изменения $_session переменной просто не будут отражаться на веб-странице, уже доставленной клиенту.

Короче говоря, вы можете справиться с этим на стороне клиента только с помощью ответа jsonу тебя есть.Забудьте о $_SESSION для этой задачи.;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...