重新加载后Ajax结果消失了

时间:2019-01-20 13:32:35

标签: php sql ajax

我正在建立以下系统。如果用户单击跟随按钮,则会触发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 :(得分:0)

我认为您应该使用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的地方,数据将在数据库内部进行更新,并且刷新此页面时,数据库将重新加载完美。

答案 1 :(得分:0)

重新加载页面后,将HTML页面重置为其原始形式是预期的行为。在用HTML呈现按钮时,您需要检查用户是否已经在关注。

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

isFollowing()是您的逻辑的占位符,用于检查是否已关注该用户。