我正在尝试为我的网站创建一个功能,允许用户登录,然后从数据库 (PHP) 访问他们的特定数据,然后以 html 格式在屏幕上显示他们的用户数据。我知道我必须使用 json_encode 对 PHP 数据进行编码,然后在 javascript 中使用 json_parse。我遇到的问题是 javascript 部分的所有教程都是这样的:
var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
var obj = JSON.parse(text);
但我无法输入具体要调用的数据,因为它会针对每个用户而变化,我只有列。 PHP 中的编码数据如下所示:
echo json_encode($_SESSION['currentlevel']);
但我不知道在javascript中放什么来调用我需要的编码数据。
我无法在 javascript 文件中使用 php。
现在这是我的 PHP:
<?php
session_start();
$link = mysqli_connect($servername, $username, $password, $database);
$sql = "SELECT CurrentLevel FROM UserInfo1 WHERE
UserEmail = '". mysqli_real_escape_string($link, $_SESSION['useremail']) .
"'";
$result = mysqli_query($link, $sql);
if (!$result) {
die(mysqli_error());
}
$_SESSION['currentlevel'] = '{"CurrentLevel": "'.$result.'"}';
if (!$_SESSION['currentlevel']) {
die(mysqli_error());
}
echo json_encode($_SESSION['currentlevel']);
我的 Javascript 看起来像这样:
function getcurrentlevel() {
var xmlhttp, myObj;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
document.getElementById("CurrentLevel").innerHTML = " Level: 'myobj'";
}
};
xmlhttp.open("GET", "php5.php", true);
xmlhttp.send();
}
最佳答案
在您当前的方法中至少有两个细节需要更正:
(i) 在 php5.php 文件中:
$_SESSION['currentlevel'] = '{"CurrentLevel": "'.$result.'"}';
右侧已经是有效的字符串化 json(您通过字符串连接生成它,没关系。另一个具有相同效果的选项是
$_SESSION['currentlevel'] = json_encode(array('CurrentLevel' => $result));
(ii) 在 js 端你需要像这样实际使用返回值:
document.getElementById("CurrentLevel").innerHTML = " Level: " + myObj.CurrentLevel;
关于javascript - 如果编码数据不确定,如何在 javascript 中使用 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49518217/