【问题标题】:Insert user-specific data into HTML via PHP, JSON, andJavascript通过 PHP、JSON 和 Javascript 将用户特定数据插入 HTML
【发布时间】:2018-03-24 16:11:35
【问题描述】:

我知道这个网站不喜欢“发现我的错误”代码,但我很绝望。我有一个网站需要从数据库 (PHP) 访问特定于用户的数据,将数据转换为 JSON 文件,然后更改 HTML 标头以显示该特定数据。数据库表包含用户电子邮件、密码和类名等。我有一个登录页面,它为电子邮件和密码建立会话变量。当用户登录时,我希望将他们的类名输入到 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>

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

【问题讨论】:

  • 欢迎来到本站!查看tourhow-to-ask page 了解更多关于提出问题以吸引高质量答案的信息。您可以edit your question 包含更多信息。正在发生什么,您期望会发生什么?另外,请您添加 HTML 的相关部分吗?我注意到您的 PHP 代码在解码后从未使用过$obj
  • 我添加了相关的 html 和更多关于我需要它做什么的数据。老实说,我不明白 obj 变量应该做什么,我只是将本网站和 w3schools 上现有代码的所有内容拼凑在一起,这似乎是必要的。 javascript中还有一个obj变量

标签: javascript php mysql json database


【解决方案1】:

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

PHP:

  • 删除文件末尾的?&gt;。纯 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=,但我不建议更改它们,除非上述方法没有帮助。

祝你好运!

【讨论】:

  • 感谢您的建议,不幸的是代码仍然无法正常工作。
  • @Mekade24 您在 PHP 或 JavaScript 中遇到了什么错误?您是否尝试在浏览器调试器中检查 myObj
  • 我在 PHP 或 Javascript 端没有收到任何错误。我不知道如何设置断点或使用浏览器调试器。我已经编码不到一周了。
  • @Mekade24 啊!看看this tutorial for Chromethis for Firefox。我建议在您了解这些工具并获得更多信息之前让这个问题保持开放。祝你好运!
  • 即使有教程,我也无法让浏览器调试器工作,我真的没有时间学习一个全新的程序。我的意思是,我从 w3schools 得到了这个代码。我在这段代码中必须有一个可识别的错误。网站一直都在获取这样的信息,所以这样做的方法必须流行且易于复制。我无法理解为什么这个看似简单的功能在任何地方都没有答案。
猜你喜欢
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多