PHP/MySQL/AJAX - 使用 AJAX 刷新查询值

标签 php jquery mysql ajax

我希望我的 header 能够使用数据库中的新值进行刷新。

为了实现它,我创建了一个 AJAX post 方法:

AJAX(已编辑):

$(document).ready( function () {
  function update() {
  $.ajax({
    type: "POST",
    url: "indextopgame.php",
    data: { id: "<?=$_SESSION['user']['id']?>"},
    success: function(data) { 
        $(".full-wrapper").html(data);
    }
});
      }

  setInterval( update, 5000 );
});

它应该每 10 秒将 $_SESSION['user']['id'] 传递给 indextopgame.php

indextopgame.php 看起来像这样:

PHP 部分(已编辑):

<?php

session_start();

$con = new mysqli("localhost","d0man94_eworld","own3d123","d0man94_eworld");

function sql_safe($s)
{
    if (get_magic_quotes_gpc())
        $s = stripslashes($s);
    global $con;
    return mysqli_real_escape_string($con, $s);
}

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{   
    $id = trim(sql_safe($_POST['id']));

    $data = "SELECT username, email, user_role, fbid, googleid, fname, lname, avatar, energy, energymax, health, healthmax, fame, edollar, etoken, companies, workid, city, function FROM members WHERE id = $id";
    $result = mysqli_query($con, $data);

    if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {

            $_SESSION['user']['user_role'] = $row["id"];
            $_SESSION['user']['fbid'] = $row['fbid'];
            $_SESSION['user']['googleid'] = $row['googleid'];
            $_SESSION['user']['created'] = $row['created'];
            $_SESSION['user']['lastlogin'] = $row['lastlogin'];
            $_SESSION['user']['username'] = $row['username'];
            $_SESSION['user']['fname'] = $row['fname'];
            $_SESSION['user']['lname'] = $row['lname'];
            $_SESSION['user']['email'] = $row['email'];
            $_SESSION['user']['avatar'] = $row['avatar'];
            $_SESSION['user']['energy'] = $row['energy'];
            $_SESSION['user']['energymax'] = $row['energymax'];
            $_SESSION['user']['health'] = $row['health'];
            $_SESSION['user']['healthmax'] = $row['healthmax'];
            $_SESSION['user']['fame'] = $row['fame'];
            $_SESSION['user']['edollar'] = $row['edollar'];
            $_SESSION['user']['etoken'] = $row['etoken'];
            $_SESSION['user']['companies'] = $row['companies'];
            $_SESSION['user']['workid'] = $row['workid'];
            $_SESSION['user']['city'] = $row['city'];
            $_SESSION['user']['function'] = $row['function'];
        }

            echo $_SESSION['user']['energy'];
    }
}
?>

但这仍然不会用我想要的值更新标题,相反它只会使标题消失。这段代码有什么问题?也许还有其他更有效的方法来刷新 MySQL 中的值?

编辑:

我已经编辑了 AJAX/PHP 代码示例 - 它的工作原理就是这样!但我怎样才能回应所有这些变量呢?一个接一个的回显似乎会再次导致错误,因为值将从我的标题中消失。

编辑2:

解决了,我在语法上犯了一个愚蠢的错误...感谢大家的贡献!

最佳答案

您没有在 ajax 调用中使用从服务器发回的数据:

success: function() { 
        $(".full-wrapper").html(data); 
    }
});

应该是:

success: function(data) { 
                  ^^^^ the returned data
        $(".full-wrapper").html(data); 
    }
});

您还应该检查您的 php 脚本是否确实回显了有用的内容。

关于PHP/MySQL/AJAX - 使用 AJAX 刷新查询值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43607470/

相关文章:

php - 调用未定义的函数php mysql

mysql - 选择不同的列

mysql - SQL - 将范围之间的日期分解为新记录

javascript - 使用 jQuery 获取特定行的值

javascript - 使用 jQuery 抓取表数据并转换为无序列表

javascript - Bootstrap 模态未正确显示

php - OS X Lion Apache 和 PHP 无法通信

php - 获取所有选中复选框的值并将它们插入数据库 - PHP

php - 如何使用 php gd 创建自定义缩略图

php - 如何使用来自 discord oauth2 登录的访问 token 来获取用户信息