gpt4 book ai didi

javascript - json_encode 是否非常挑剔?

转载 作者:行者123 更新时间:2023-12-03 12:10:39 27 4
gpt4 key购买 nike

看来 json_encode 对我的 PHP 文件中可以包含哪些其他内容非常挑剔。这很好,因为我只是在文件 A(使用 json_encode)自己的文件中执行我通常会执行的操作。

我只是想我会问,因为我在 $_SESSION 中存储了一个变量,而不是用该变量更新我的数据库,因为当我在其文件中拥有所有代码时,json_encode 似乎不想工作。

例如,此代码不起作用:

<?php
session_start();
include 'dbcon.php';

$sessionID = uniqid();
echo json_encode($sessionID);

if(isSet($_POST['clearSession']) == '1')
{
$query = "UPDATE currentID SET id=('0')";
$execute = $mysqli->query($query) or die($mysqli->error.__LINE__);
} else {
$query = "UPDATE currentID SET id=('$sessionID')";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
}

?>

当在浏览器中访问该文件时,我实际上得到了 json_encode 结果,但是当我的 Javascript 调用它时,它似乎没有正确导入它。

所以,现在我只有两个 PHP 文件:

<?php
session_start();
$sessionID = uniqid();
$_SESSION["sessionID"] = $sessionID;
echo json_encode($sessionID);
?>

哪个 echo 与第一个文件中的内容相同,但这次我的 JavaScript 正确导入了它。

<?php
session_start();
include 'dbcon.php';
if(isSet($_POST['clearSession']) == '1')
{
$query = "UPDATE currentID SET id=('0')";
$execute = $mysqli->query($query) or die($mysqli->error.__LINE__);
} else {
$sessionID = $_SESSION["sessionID"];
$query = "UPDATE currentID SET id=('$sessionID')";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
}
?>

我想我的问题是,为什么会发生这种情况?我必须将 uniqid 存储在 SESSION 中,以便我的其他 PHP 文件可以将其添加到数据库中,这似乎有点愚蠢。而如果我只是将其放在一个文件中,那么我可以在生成新的 uniqid 时更新数据库,并避免首先使用 $_SESSION。

最佳答案

你有这个:

$sessionID = uniqid();
echo json_encode($sessionID); // "53d4c17abfe87"

由于 uniqid() 生成纯字符串,因此您的输出不是有效的 JSON(根据 format specification) 。你需要这样的东西:

$sessionID = uniqid();
echo json_encode(array($sessionID)); // ["53d4c17abfe87"]

为什么 json_encode() 首先会生成无效的 JSON?因为有时生成部分 JSON 很有用。例如,将值注入(inject)生成的 JavaScript 代码是一个方便的技巧:

var foo = <?=json_encode($sessionID)?>;

这也是documented :

PHP implements a superset of JSON - it will also encode and decode scalar types and NULL. The JSON standard only supports these values when they are nested inside an array or an object.

所以回答问题标题:

Is json_encode extremely picky?

相反,还算轻松!

关于javascript - json_encode 是否非常挑剔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24979376/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com