【问题标题】:Ajax result gone after reload重新加载后 Ajax 结果消失了
【发布时间】:2019-06-14 01:47:43
【问题描述】:

我正在制作一个跟随系统。如果用户单击跟随按钮,则会触发 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";


        }

}

我希望关注/取消关注按钮在刷新后不会改变!

【问题讨论】:

    标签: php sql ajax


    【解决方案1】:

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

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

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

    【讨论】:

    • 我收到一个错误:未捕获的错误:调用未定义的函数 isFollowing(
    • @MeesEgberts 如前所述,isFollowing() 不是真正的函数,而是您自己的逻辑的占位符,用于检查用户是否被关注。例如,您可以定义此函数并使用SELECT 查询来检查关注状态。
    • 非常感谢!
    【解决方案2】:

    我认为你应该使用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,数据在你的数据库中更新,当刷新这个页面时,你的数据库重新加载完美。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-30
      • 2014-10-05
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      相关资源
      最近更新 更多