Обновление переменных сеанса с помощью запроса AJAX - PullRequest
0 голосов
/ 15 января 2019

Вот проблема. Мне нужно вызвать скрипт "reset.php" с запросом AJAX и сбросить переменные сеанса к начальным значениям там. Теперь это выглядит так:

index.php:

<?php session_start();
    $_SESSION['var'] = 0;
    $_SESSION['var'] = 1;
?>
<button>reset</button>
<script type="text/javascript">
    $("button").click(function() {
        $.ajax({
            type: "GET",
            url: "reset.php",
            success: function(){
                    //some function
                }
            });         
    });
</script>

reset.php

<?php session_start();
    $_SESSION['var'] = 0;
?>

Это не работает, «успех» работает правильно, но переменные сеанса остаются прежними. В чем может быть проблема?

1 Ответ

0 голосов
/ 15 января 2019

Переменные сеанса читаются только при первой визуализации страницы. Запрос AJAX не повлияет на это вообще. Если вам нужно прочитать обновленное значение (которое немного избыточно, поскольку вы только что сделали вызов, чтобы установить явное значение), верните данные в запрос AJAX. При этом, вы, кажется, немного смущены разницей между логикой на стороне клиента и на стороне сервера. Я бы предложил провести некоторые исследования в этой области. - сказал Рори МакКроссан в комментарии.

    <?php session_start();
        if(isset($_SESSION['var'])) {
              $_SESSION['var'] = 0;
        }else {
            $_SESSION['var'] = 1;
            }
        ?>
        <button>reset</button>
        <script type="text/javascript">
            $("button").click(function() {
                $.ajax({
                    type: "GET",
                    url: "reset.php",
                    success: function(res){
                            alert(res);
    if(res) { 
    location.reload();  // but AJAX means without reload                        
     //<?  $_SESSION['var']; ?> = res; will not work            
    // you cannot set PHP value here, you need to do it with javascript if you want to set the value anywhere on this page

}
                        }
                    });         
            });
        </script>

ваш php

<?php session_start();
    $_SESSION['var'] = 0;
    echo  $_SESSION['var'];
?>

вы можете использовать редирект

<?php session_start();
        $_SESSION['var'] = 0;
       header("url of the above page");
    ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...