【问题标题】:Jquery does not update values directly in the first click, only on the socondJquery 不会在第一次单击时直接更新值,仅在第二次单击时
【发布时间】:2015-09-23 17:49:04
【问题描述】:

我做了一个订阅按钮,用户点击订阅并获得订阅总数。例如,当用户点击订阅时,有 10 个订阅者。该值将更新为 11。不知何故,它不起作用。

$subs_no = '10';
<div id='subs_no'>$subs_no</div> <a href='#' id='sub'>Subscribe</a>

关于js文件:

$('#sub').click(
    function () {
        $.post('sub.php', {
            sub: 1
        }, function (sub) {
            $('#subs_no').text(sub);
        });
    });

关于php sub.php:

$sub = $_POST['sub'];
$con->query("UPDATE sub SET sub=sub + $sub");
$q = $con->query("SELECT * FROM sub");
while($r = $q->fetch_assoc()){
    $subs = $r['sub'];
    echo $subs;
}

点击订阅后按钮变为取消订阅,但数值仍为 10 个订阅。当我再次点击按钮变成订阅但值为 11。它搞砸了我的系统。

【问题讨论】:

  • 数据库中有什么?请显示您的表结构及其数据。而且您的代码没有显示将按钮变为取消订阅和订阅的功能。
  • 其实退订只是另一个功能中的另一个帖子。每次单击都会更改按钮。 table 是 sub,只有 id 和 sub sub 是 subs 的数量。

标签: php jquery


【解决方案1】:

用以下数据库测试,它可以工作:

sql:

CREATE TABLE IF NOT EXISTS `sub` (
  `sub` int(11) NOT NULL DEFAULT '0'
);

INSERT INTO `sub` (`sub`) VALUES (0);

html/php:

<script>

    $(document).ready(function() {

    $('#sub').click(
        function () {
            $.post('sub.php', {
                sub: 1
            }, function (sub) {
                $('#subs_no').text(sub);
            });
        });


    });

    </script>

<div id='subs_no'><?php $subs_no; ?></div>
<a href='#' id='sub'>Subscribe</a>

php:

<?php

$con = new mysqli('localhost', 'root', 'pass', 'table');

$sub = $_POST['sub'];

$con->query("UPDATE sub SET sub=sub+$sub");
$q = $con->query("SELECT * FROM sub");
while($r = $q->fetch_assoc()){
    $subs = $r['sub'];
    echo $subs;
}

?>

如果您的表格中有 id,则需要在更新和选择时提供 id。

【讨论】:

  • 你可以放一个 where 子句,比如 where username is = john 并添加一个检查器。就像如果 john 已经替换了,那么它将删除最后一个子。这样他就可以取消订阅。但是如果他还没有sub,那么数据将被插入。我的还是不行,最近更新了。在 urs 上尝试它是否有效。子表上已经有一个 id,并且它是自动递增的。
【解决方案2】:

我自己想出来的。我做了一个函数来在 2 秒后更新 subs 的值。因为即使没有插入 sub 的值,也可能导致 subs 正在更新。感谢那些帮助过的人。

【讨论】:

    猜你喜欢
    • 2019-11-05
    • 2022-11-11
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2015-06-03
    • 1970-01-01
    相关资源
    最近更新 更多