首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输入值在单击一次后不会立即更改- PHP、AJAX、JQuery

输入值在单击一次后不会立即更改- PHP、AJAX、JQuery
EN

Stack Overflow用户
提问于 2021-01-30 19:21:44
回答 1查看 42关注 0票数 1

我有这样的代码:

index.php文件

代码语言:javascript
复制
<?php
$host="localhost";
$username="root";
$password="";
$databasename="admin_example";

$connect = mysqli_connect($host, $username, $password, $databasename);
$select = mysqli_query($connect, "SELECT * FROM rating");
$data = mysqli_fetch_assoc($select);

if( $connect -> connect_error){
   echo ("connection failed" . $connection->connect_error);
}

function query($query){
    global $connect;
  
    $result = mysqli_query($connect, $query);
    $rows = [];
    while($row = mysqli_fetch_array($result)){
        $rows[] = $row;
  
    }
    return $rows;
  }

if(isset($_POST['like'])){
    global $connect, $select;

    $query = mysqli_query($connect, "UPDATE rating SET total_votes=total_votes+1,likes=likes+1");
  
    foreach($select as $row){
        $likes = $row["likes"];

        echo $likes;
        exit();
      }
}

?>

<link rel="stylesheet" type="text/css" href="rating_style.css">

<input type="button" id="like" onclick="like();" value="Likes: <?php echo $data["likes"]; ?>">


<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>

<script>

function like(){
    $.ajax({
          type: 'POST',
          url: 'index.php',
          data: {
            like:"likes"
          },
          success: function (response) {
            $("#like").prop('value', 'Likes: ' + response);
          }
    });
    }


</script>

<?php



?>

奇怪的是,它的价值并没有立即改变。所以,比如喜欢: 0,你点击一次不变还喜欢: 0,再点击喜欢: 1,然后如果我刷新浏览器的类似: 2。我已经在网上搜索答案,但没有运气。任何帮助都是非常感谢的,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-30 20:04:03

在给定的示例中,“全局$connect,$select;"将select从全局导入到本地范围,并在评级更新之前执行。因此,它总是在更新之前返回数据。

下面的代码将为您提供预期的信息

代码语言:javascript
复制
<?php
$host="localhost";
$username="root";
$password="";
$databasename="admin_example";

$connect = mysqli_connect($host, $username, $password, $databasename);
$select = mysqli_query($connect, "SELECT * FROM rating");
$data = mysqli_fetch_assoc($select);

if( $connect -> connect_error){
   echo ("connection failed" . $connection->connect_error);
}

function query($query){
    global $connect;
  
    $result = mysqli_query($connect, $query);
    $rows = [];
    while($row = mysqli_fetch_array($result)){
        $rows[] = $row;
  
    }
    return $rows;
  }

if(isset($_POST['like'])){
    global $connect, $select;

    $query = mysqli_query($connect, "UPDATE rating SET total_votes=total_votes+1,likes=likes+1");
    //which should be executed after the update
    $select = mysqli_query($connect, "SELECT * FROM rating");
    foreach($select as $row){
        $likes = $row["likes"];

        echo $likes;
        exit();
      }
}

?>

<link rel="stylesheet" type="text/css" href="rating_style.css">

<input type="button" id="like" onclick="like();" value="Likes: <?php echo $data["likes"]; ?>">


<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>

<script>

function like(){
    $.ajax({
          type: 'POST',
          url: 'index.php',
          data: {
            like:"likes"
          },
          success: function (response) {
            $("#like").prop('value', 'Likes: ' + response);
          }
    });
    }


</script>

<?php



?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65972188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档