Результат Ajax пропал после перезагрузки - PullRequest
0 голосов
/ 20 января 2019

Я создаю следующую систему. Если пользователь нажимает кнопку «Follow», запускается функция AJAX. Функция ajax отправляет данные в файл actions.php, и этот файл проверяет, есть ли данные в базе данных. На основе этой информации код вставляет подписчик или удаляет его из базы данных. Это отлично работает! Но, например, если один пользователь начинает следовать за другим человеком, а затем обновляет страницу, кнопки html снова изменяются, чтобы следовать.

Я пытался сделать результат в PHP, но это не сработало

Ajax:

$(".toggleFollow").click(function() {

    var id = $(this).attr("data-userId");

    $.ajax({
        type: "POST",
        url: "actions.php?action=toggleFollow",
        data: "userId=" + id,
        success: function(result) {

            if (result == "1") {

                $("button[data-userId='" + id + "']").html('<span class="icon icon-add-user"></span> Follow');

            } else if (result == "2") {

                $("button[data-userId='" + id + "']").html('<span class="icon icon-remove-user"></span> Unfollow');

            }
        }

    })

})

actions.php:

session_start();
require 'dbh.inc.php';
$id = $_SESSION['userId'];
$userId = $_POST['userId'];
if ($_GET['action'] == 'toggleFollow') {

    $query = "SELECT * FROM isFollowing WHERE follower = ". mysqli_real_escape_string($conn, $_SESSION['userId'])." AND isFollowing = ". mysqli_real_escape_string($conn, $_POST['userId'])." LIMIT 1";
        $result = mysqli_query($conn, $query);
        if (mysqli_num_rows($result) > 0) {

            $row = mysqli_fetch_assoc($result);

            mysqli_query($conn, "DELETE FROM isFollowing WHERE id = ". mysqli_real_escape_string($conn, $row['id'])." LIMIT 1");

            echo "1";

        } else {

            mysqli_query($conn, "INSERT INTO isFollowing (follower, isFollowing) VALUES (". mysqli_real_escape_string($conn, $_SESSION['userId']).", ". mysqli_real_escape_string($conn, $_POST['userId']).")");

            echo "2";


        }

}

Я ожидаю, что кнопка "Подписаться / Отписаться" не изменится после обновления! PS Это мой первый вопрос по stackoverflow!

Ответы [ 2 ]

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

Ожидается, что HTML-страница восстановит свою первоначальную форму после перезагрузки страницы. Вам нужно проверить, отслеживает ли уже пользователь при рендеринге кнопки в HTML.

<button data-userId=2>
<?php echo isFollowing(2) ? 'Unfollow' : 'Follow'; ?>
</button>

isFollowing() - это заполнитель вашей логики, который проверяет, был ли пользователь уже подписан.

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

Я думаю, вы должны использовать UPDATE запрос

Код желания следующий:

(1) -> Go url, load database 
(2) -> Get statment is (none) Follow 
(3) -> Ajax send
(4) -> UPDATE statements (toggle) to unFollow
(5) -> Response and change html 
(6) -> Page refresh 
(7) -> back to (1)

При этом, когда Ajax отправляет actions.php, данные обновляются внутри вашей базы данных, иКогда вы обновите эту страницу, ваша база данных перезагрузится идеально.

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