Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript json_编码是否非常挑剔?_Javascript_Php_Session_Json - Fatal编程技术网

Javascript json_编码是否非常挑剔?

Javascript json_编码是否非常挑剔?,javascript,php,session,json,Javascript,Php,Session,Json,看来json_encode对我的PHP文件中可能包含的其他内容非常挑剔。这很好,因为我只是在它自己的文件中执行通常在文件A中执行的操作(使用json_编码) 我只是想问一下,因为我在$\u会话中存储了一个变量,而不是用这个变量更新我的数据库,因为json\u encode似乎不想在文件中包含所有代码时工作 例如,此代码不起作用: <?php session_start(); include 'dbcon.php'; $sessionID = uniqid();

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

我只是想问一下,因为我在$\u会话中存储了一个变量,而不是用这个变量更新我的数据库,因为json\u 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__);
    }

?>
您有:

$sessionID = uniqid();
echo json_encode($sessionID); // "53d4c17abfe87"
由于
uniqid()
生成一个普通字符串,因此您的输出不是有效的JSON。您将需要这样的内容:

$sessionID = uniqid();
echo json_encode(array($sessionID)); // ["53d4c17abfe87"]
为什么
json\u encode()
首先会生成无效的json?因为有时候生成部分JSON很有用。例如,向生成的JavaScript代码中注入值是一个方便的技巧:

var foo = <?=json_encode($sessionID)?>;
var foo=;
它也是:

PHP实现了一个JSON的超集——它还将进行编码和解码 标量类型和NULL。JSON标准仅支持这些值 当它们嵌套在数组或对象中时

因此,要回答问题标题:

json_编码是否非常挑剔


相反,它相当轻松

您不必将其存储在会话中,因为$\u会话是一个数组

所以,你想要的是这样的:

echo json_encode(array('sessionID' => $sessionID));
obj = JSON.parse(jsonObj);
alert(obj.sessionID);
然后,当您使用JavaScript解析JSON时,您可以如下方式访问它:

echo json_encode(array('sessionID' => $sessionID));
obj = JSON.parse(jsonObj);
alert(obj.sessionID);
显然,
jsonObj
是从服务器传递的JSON


希望这有帮助

缩进代码。如果你想要真正的人帮助你,这是一个非常好的主意。请对我们好一点。我使用了ctrl+K,所以在我这边看起来不错。你这边并不是你要帮助的每个人的终点。也就是说,当您回显/打印json_encode时,它的实际输出是什么?我很难相信这就是问题所在。(你的代码中有回音,它记录到终端/cmd的是什么?)当你说“我的目的不是每个人的目的”时,我想我听不懂你的英语,对不起:(两个文件的输出都是“53d4be32bde4e”或者是它的一个变体。但是,一个成功导入,而另一个没有。问题是,您将JSON视为一个黑匣子。它不是。它只是文本,并且是一种相当简单的格式。您需要查看PHP生成的确切输出,而不只是将其输入JavaScript,然后在最后查看。选项包括在眉毛中打开*.PHP URL呃(有很多方法可以伪造帖子数据),或者只是使用你的浏览器控制台(大多数浏览器中的“网络”窗格)。谢谢你的解释!但是,我仍然不明白为什么当它们都输出相同的内容时,一种方法有效,而另一种方法无效:P