javascript - 通过 PHP、JSON 和 Javascript 将用户特定数据插入 HTML

标签 javascript php mysql json database

我知道这个网站不喜欢“发现我的错误”代码,但我很绝望。我有一个网站需要从数据库 (PHP) 访问特定于用户的数据,将数据转换为 JSON 文件,然后更改 HTML header 以显示该特定数据。数据库表包含用户电子邮件、密码和类名等。我有一个登录页面,用于为电子邮件和密码建立 session 变量。当用户登录时,我希望将他们的类名输入到 HTML 文本中。我使用了数十种来源,主要是 W3schools,并得出了这段代码:

PHP:

<?php
session_start();

 header("Content-Type: application/json; charset=UTF-8");
 $obj = json_decode($_GET["x"], false);

 if (!$obj) {
 die(mysqli_error());
 }

    $servername = "localhost";
$username = "id5143969_enviroquest1";
$password = "codeteam1";
$database = "id5143969_enviroquest1";
$link = mysqli_connect($servername, $username, $password, $database);

$result = $link->query("SELECT UserClassName FROM ".$obj->UserInfo1." WHERE ".$obj->UserEmail."= '". mysqli_real_escape_string($link, 
$_SESSION['useremail']) . "' and ".$obj->UserPassword." = '" . mysqli_real_escape_string($link, $_SESSION['userpassword']) . "'");

if (!$result) {
die(mysqli_error());
}

$_SESSION['classname'] = $result->fetch_assoc();

if (!$_SESSION['classname']) {
die(mysqli_error());
}

     echo json_encode($_SESSION['classname']);

Javascript:

function getclassname() {
var obj, dbParam, xmlhttp, myObj, x, txt = "";
obj = { "UserInfo1":"UserClassName"};
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
    myObj = JSON.parse(this.responseText);
    document.getElementById("UserClassName").innerHTML = myObj;
    }
};
xmlhttp.open("GET", "php2.php" + dbParam, true);
xmlhttp.send();
}

HTML:

<h1 class="text-center" id="UserClassName" name="UserClassName" onload= 
"getclassname()"> </h1>

我不知道出了什么问题,而且我对编码太陌生,无法自己解决。

最佳答案

试试这个(我无法测试,但是)—

PHP:

  • 删除文件末尾的?>。纯 PHP 文件应始终离开结束标记。
  • (MYSQLI_ASSOC) 更改为 () - 根据 thisthe docs ,你不需要它。

Javascript:

  • 删除 session_start() 调用
  • 改变

    for (x in myObj) {
        txt += myObj[x].name + "<br>";
    }
    

    txt = myObj.UserClassName
    

    PHP 中的 fetch_assoc() 调用为您提供了一个使用数据库字段名称的映射(根据 the docs,“数组中的每个键代表结果集列之一的名称”)对于单行。因此,如果 JSON 编码/解码工作正常,您应该能够直接引用该字段。

要对此进行测试,请在开发人员工具中,在 txt = ... 行设置一个断点,然后查看 myObj 是什么。

我认为您不需要 $objdbParam?x=,但我不建议更改它们,除非以上没有帮助。

祝你好运!

关于javascript - 通过 PHP、JSON 和 Javascript 将用户特定数据插入 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49466941/

相关文章:

php - Mysql INSERT INTO 无法正常工作

php - Left Join After Where 子句

mysql - 无法将数据库导入服务器

javascript - Google Maps v3 DistanceMatrix/Directions 忽略 avoidTolls :false

JavaScript 在验证后切换模式显示

php - 如何在管理类中将函数作为参数传递

php - 动态 WordPress 安装、nginx、varnish、memcached、混合的理想设置...

mysql - 根据时间戳删除超过 24 小时或 1 天的记录

javascript - 防止 WordPress javascript 冲突的好习惯?

JavaScript 对象未正确发布到后端