php - 重新加载后 Ajax 结果消失了
问题描述
我正在制作一个跟随系统。如果用户单击跟随按钮,则会触发 ajax 函数。ajax 函数将数据发送到 actions.php 文件,该文件检查数据库中是否有数据。基于此信息,代码插入关注者或将其从数据库中删除。这很好用!但是例如,如果一个用户开始关注另一个人,然后刷新页面,则 HTML 按钮会变回跟随。
我试图用 PHP 做结果,但没有成功
阿贾克斯:
$(".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');
}
}
})
})
动作.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";
}
}
我希望刷新后关注/取消关注按钮不会改变!
解决方案
HTML 页面在页面重新加载后重置为其原始形式是预期的行为。在 HTML 中呈现按钮时,您需要检查用户是否已经关注。
<button data-userId=2>
<?php echo isFollowing(2) ? 'Unfollow' : 'Follow'; ?>
</button>
isFollowing()
是您的逻辑的占位符,用于检查用户是否已被关注。
推荐阅读
- python - 使用 Scipy 输出牛顿法的迭代次数
- mysql - MySQL 更新触发器正在更新表上的每条记录
- python - 调用修改输入的函数时如何正确使用z3
- ios - 应用程序安装失败。无法检查应用程序包
- angular - 如何仅为第一次导航更改获取路由器导航结束 url
- algorithm - 通过两个比较函数同时对一个列表进行排序的算法,最大限度地减少不一致对?
- java - 如何在数组列表中搜索字符串并将其删除
- java - 无法将请求的类放在单个 dex 文件中(# 方法:86421 > 65536)
- php - 将 AJAX 与 PHP-MVC 结合使用
- java - java - 暂停所有正在运行的线程一段时间