如何使用PHP、jQuery和AJAX实现like计数器?
我正在为引号创建一个类似的计数器。当用户单击like按钮并显示like的数量时,我试图增加like计数器 我遇到的问题:如何使用PHP、jQuery和AJAX实现like计数器?,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我正在为引号创建一个类似的计数器。当用户单击like按钮并显示like的数量时,我试图增加like计数器 我遇到的问题: 当我刷新页面时,Like计数器会增加(不是因为我实际上按了Like按钮) 我尝试实现jQuery以实时更新like计数器,但失败:( 我参考了所有与此相关的QnA,但没有找到所需的解决方案。我检查了这个[问题],并做了必要的更改,但现在当我单击按钮时,数据库中没有更新 This is the code for one quote. <div class="testim
This is the code for one quote.
<div class="testimonial text-sm is-revealing">
<div class="testimonial-inner">
<div class="testimonial-main">
<div class="testimonial-body">
<p id="q1">
<?php
$sql = "select quotes from voted where voted.quote_id = 1";
$result = mysqli_query($link,$sql);
$row = mysqli_fetch_array($result);
echo "$row[0]";
?></p>
</div>
</div>
<div class="testimonial-footer">
<div class="testimonial-name">
<button method="POST" action='' name="like" type="submit" class="like"><b>Like</b></button>
<?php
if(isset($_POST['like'])){
$link = mysqli_connect("localhost","root","","success");
$sql = "UPDATE voted SET likes = likes+1 WHERE voted.quote_id = 1";
$result = mysqli_query($link,$sql);
}
?>
<label>
<?php
$link = mysqli_connect("localhost","root","","success");
$sql = "SELECT likes from voted WHERE voted.quote_id = 1";
$result = mysqli_query($link,$sql);
$row = mysqli_fetch_array($result);
echo "$row[0]";
?>
</label>
<button class="btn" id="clipboard" onclick="copyFunction('#q1')"></button>
</div>
</div>
</div>
这是一个报价的代码。
喜欢
单击like按钮时,如何使like计数器实现
如何实现jQuery和AJAX,从而在不刷新页面的情况下更新计数器
请原谅我糟糕的代码结构
谢谢你的帮助
p.S要使这样的异步设置正常工作,您需要三件事:
我还没有测试过这段代码,但它应该足够清晰和详细,让您走上正确的轨道。要让这样的异步设置正常工作,您需要三件事:
我还没有测试过这段代码,但它应该足够清晰和详细,让您走上正确的轨道。旁注:您不应该在
echo“$row[0]”之类的引号中加上变量人们会争辩说它是有效的,是的,但这是一种不好的做法,可能会产生副作用。将字符串与
连接起来,就可以了。echo$row[0]
按钮
没有方法
或操作
属性,它们属于表单
。感谢@Tim注意到这一点。我将按钮标记包含在表单标记中,现在页面刷新,当我单击按钮时,我的类计数器正在更新。旁注:你不应该将变量放入quot类似于echo“$row[0]”;
。人们会认为它是有效的,是的,但这是一种不好的做法,可能会产生副作用。将字符串与
连接起来,就可以了。echo$row[0]
按钮
没有方法
或操作
属性,它们属于表单
。感谢@Tim注意到这一点。我将按钮标记包含在表单标记中,现在页面刷新,当我单击按钮时,我的类似计数器正在更新。
<?php
if(isset($_POST['get_quotes'])) {
$sql = "select quotes from voted where voted.quote_id = 1";
$result = mysqli_query($link,$sql);
$row = mysqli_fetch_array($result);
echo "$row[0]";
}
if(isset($_POST['like'])) {
$link = mysqli_connect("localhost","root","","success");
$sql = "UPDATE voted SET likes = likes+1 WHERE voted.quote_id = 1";
$result = mysqli_query($link,$sql);
}
?>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="core.js"></script>
<body>
<button id="increment-like" value="Like" type="button" />
<p id="like-count">
</p>
</body>
<html>
$(document).ready(function() {
// initially grab the database value and present it to the view
$('#like-count').text(getDatabaseValue());
$('#increment-like').on('click', function() {
incrementDatabaseValue();
});
});
function getDatabaseValue() {
$.post("async.php",
{
get_quotes: true
},
function (data, status) {
// check status here
//return value
return data;
});
}
function incrementDatabaseValue() {
$.post("async.php",
{
like: true
},
function (data, status) {
// check status here
// update view
$('#like-count').text(getDatabaseValue());
});
}