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

如果编码数据不确定,如何在javascript中使用json,javascript,php,database,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)访问他们的特定数据,然后在html屏幕上显示他们的用户数据。我知道我必须使用json_encode对PHP数据进行编码,然后在javascript中使用json_parse。我遇到的问题是,javascript部分的所有教程如下所示:

var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
var obj = JSON.parse(text);
echo json_encode($_SESSION['currentlevel']);
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();
}
document.getElementById("CurrentLevel").innerHTML = " Level: " + myObj.CurrentLevel;
但是我不能输入我想要调用的特定数据,因为每个用户的数据都会发生变化,我只有列。PHP中的编码数据如下所示:

var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
var obj = JSON.parse(text);
echo json_encode($_SESSION['currentlevel']);
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();
}
document.getElementById("CurrentLevel").innerHTML = " Level: " + myObj.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']);

在您当前的方法中,至少需要纠正两个细节:

(i) 在php5.php文件中:

$_SESSION['currentlevel'] = '{"CurrentLevel": "'.$result.'"}';
右边已经是有效的字符串化json(您通过字符串连接生成了它,这是可以的。另一个具有相同效果的选项是

$_SESSION['currentlevel'] = json_encode(array('CurrentLevel' => $result));
(ii)在js端,您需要实际使用返回值,如下所示:

var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
var obj = JSON.parse(text);
echo json_encode($_SESSION['currentlevel']);
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();
}
document.getElementById("CurrentLevel").innerHTML = " Level: " + myObj.CurrentLevel;

更简单的选择是不包括示例代码:

var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
var obj = JSON.parse(text);
在.js文件中,但要将其包含到由PHP生成的文件的
标记中,您可以通过这种方式更改文本变量的内容,如下所示

<header>
  <script>
    var obj = { "name": "<?= $name ?>" };
  <script>
</header>

var obj={“name”:“};

ie JS代码由PHP动态编写,其中包含您需要的值,这就是您需要的全部

两个选项:1.您通过PHP动态创建一个额外的javascript文件。这样您可以在javascript源代码中对有效负载进行编码。2.您使用javascript向响应的服务器发出初始加载ajax请求通过发送负载的php脚本。第二个选项的代码是什么样子的?这与我的有什么不同?因此用户已登录,对吗?并且您访问php的站点位于同一个域上?因此,当用户进入您的html站点时,您希望JS获取此信息?那么您不必发送任何信息ng:
$\u SESSION
应该在
.php
脚本中设置,因为会话cookie是用
XMLHttpRequest
发送的。php变量在javascript中工作吗?我想它不会调用,因为我使用的程序不允许我在javascript文件中放置标记。程序如何知道调用我需要的编码json@Andreastorvikstraumano,除非您要求
PHP
解析javascript。您想要添加内容的原因是
PHP
知道哪个用户正在与服务器通信,对吗?只要存在会话cookie集,即您使用了
$\u会话['something']
,session变量在PHP中可用,当JS是客户端时也是如此。我真希望我能说这是有效的……我的另一页代码肯定有内在的问题,因为否则我无法解释为什么这个看似简单的操作花了我一周多的时间才弄清楚,即使我能在inte上找到所有的资源谢谢你的帮助。