javascript - 如果编码数据不确定,如何在 javascript 中使用 json

标签 javascript php database

我正在尝试为我的网站创建一个功能,允许用户登录,然后从数据库 (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/

相关文章:

javascript - 使用 javascript 生成的 Bootstrap 下拉列表

javascript - 原型(prototype)继承 : constructor of child

javascript - 在javascript中获取一个包含列表的对象

android - 通过从数据库填充的 ListView 进行搜索

iphone - 在 OS X 服务器上运行的数据库将与 iOS 上的核心数据很好地同步?

javascript - document.createElement 是否一直触发 DOMContentLoaded 事件监听器?

javascript - 在同一页面中两次使用 livesearch 文本框

php - Hack typechecker 无法识别函数内的 'global' 关键字

php - 图像分页 - 如何在一个查询中获取所有参数

c++ - 连接c++和Mysql