Как обновить значение SESSION на той же странице после AJAX вызова на сообщение JSON значение без обновления страницы - PullRequest
0 голосов
/ 23 января 2020

Как обновить значение SESSION на той же странице после AJAX вызова на сообщение JSON значение без обновления страницы.

Я застрял здесь. Любая помощь в решении проблемы высоко ценится. Что запускать определенный класс в PHP на основании нажатия кнопки действия. Т.е. когда пользователь нажимает кнопку добавления, он инициирует вызов AJAX и отправляет идентификатор «ДОБАВИТЬ», а если он нажимает кнопку обновления, он отправляет идентификатор обновления. Я хочу выполнить это без обновления страницы.

Я получил данные, но единственная проблема заключается в том, что обновляется только при обновлении sh страницы

Как мне обновите СЕССИЮ в PHP, как только AJAX отправит данные. Я новичок ie, пожалуйста, успокойтесь на мне :) Спасибо u

Индекс. php

<?php
session_start();
echo "SESSION: ".$_SESSION['pageType'];
?>

<!DOCTYPE>
<html lang="en-OM">

<div >AJAX: </div><div id="msg" style="display:inline"></div></div>
<a id="btnAdd" value="add" class="btnType" href="#" role="button">ADD</a><br>
<a id="btnUpdate" value="update" class="btnType" href="#" role="button">UPDATE</a><br>
<a id="btnDelete" value="delete" class="btnType" href="#" role="button">DELETE</a>

</html>

Jquery

   <script>
    $(document).ready(function () {
        $('.btnType').click(function (ev) {
            ev.preventDefault();
            ev.stopImmediatePropagation();
            let pageID;
            pageID = $(this).attr('value');
            $.ajax({
                type: 'POST',
                url: 'postData.php',
                dataType: 'json',
                data: {
                    pageType: pageID
                },
                beforeSend: function (data) {
                },
                success: function (data) {
                    $('#msg').text(data);
                    console.log(data);
                    return data;
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    console.log('<p>status code: ' + jqXHR.status +
                        '</p><p>errorThrown: ' + errorThrown +
                        '</p><p>jqXHR.responseText:</p><div>' + jqXHR.responseText +
                        '</div>');
                    console.log('jqXHR:');
                    console.log(jqXHR);
                    console.log('textStatus:');
                    console.log(textStatus);
                    console.log('errorThrown:');
                    console.log(errorThrown);
                }
            });
        });
    });
</script>

postData. php

session_start();
if (!empty($_POST['pageType'])) {
    echo json_encode($_POST['pageType']);
    $_SESSION['pageType']=$_POST['pageType'];
    exit;
}

1 Ответ

0 голосов
/ 23 января 2020

Это должно работать лучше:

Индекс. php

<?php
session_start();
?>
<!DOCTYPE>
<html lang="en-OM">

<div >SESSION: </div><div id="msg" style="display:inline"><?php echo $_SESSION['pageType']; ?></div></div>
<a id="btnAdd" value="add" class="btnType" href="#" role="button">ADD</a><br>
<a id="btnUpdate" value="update" class="btnType" href="#" role="button">UPDATE</a><br>
<a id="btnDelete" value="delete" class="btnType" href="#" role="button">DELETE</a>

</html>

jQuery

$(document).ready(function () {
    $('.btnType').click(function (ev) {
        ev.preventDefault();
        ev.stopImmediatePropagation();
        let pageID;
        pageID = $(this).attr('value');

        $.ajax({
            type: 'POST',
            url: 'postData.php',
            data: {
                pageType: pageID
            },
            success: function (data) {
                $('#msg').text(data);
                console.log(data);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                console.log('<p>status code: ' + jqXHR.status +
                    '</p><p>errorThrown: ' + errorThrown +
                    '</p><p>jqXHR.responseText:</p><div>' + jqXHR.responseText +
                    '</div>');
                console.log('jqXHR:');
                console.log(jqXHR);
                console.log('textStatus:');
                console.log(textStatus);
                console.log('errorThrown:');
                console.log(errorThrown);
            }
        });
    });
});

postData. php

session_start();
if (!empty($_POST['pageType'])) {
    echo $_POST['pageType'];
    $_SESSION['pageType']=$_POST['pageType'];
}
else
{
  echo "error - no pagetype specified";
}
exit;

Что я сделал:

1) переместил начальный эхо-сигнал значения Session в div "msg", чтобы он мог быть перезаписан результатом AJAX вызова

2) удалить все ссылки на JSON из опций AJAX и из PHP. Вы не используете (и не должны использовать) JSON здесь для отправки одного фрагмента текста.

3) добавили базовую c отказоустойчивость к postData. php, чтобы обеспечить всегда есть какой-то вывод.

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