来自localstorage的JSON无法在php中解码

Posted

技术标签:

【中文标题】来自localstorage的JSON无法在php中解码【英文标题】:JSON from localstorage not able to decode in php 【发布时间】:2017-11-14 20:34:18 【问题描述】:

我正在从 localstorage 作为 JSON 获取值并尝试解码。 但它不起作用。

这是我从本地存储中获取 JSON 的代码:

$items = "<script> document.write(JSON.parse(JSON.stringify(localStorage.getItem('itemList')))); </script>";

当我在$items 上方回显时,结果如下:

"items":["name":"Guitar","id":"1"]

像这样在json上面解码:

$decoded = json_decode($items, true);

当我试图回显$decoded 时,不显示任何内容。当我做var_dump($decoded) 它显示NULL

感谢任何帮助。谢谢。

【问题讨论】:

Em...你要达到什么目标?这是一个完全错误的代码。字符串不会像 JS 那样表现......它只是一个普通的字符串。您必须将 JS 和 php 部分分开 @FieryCat - 我正在尝试将 localStoarge json 值获取到 php 并使用 php 对其进行解码 @FieryCat - 我可以从 locaStorage 获取 JSON $decoded = json_decode('"items":["name":"Guitar","id":"1"]', true); - 可行;你的样本 - 永远不会 @FieryCat - 我可以知道为什么吗? 【参考方案1】:

情况是你无法将 JS/PHP 组合“一行”。

$items = "<script> document.write(JSON.parse(JSON.stringify(localStorage.getItem('itemList')))); </script>";

来自$itemsjson_decode 将直接为您提供您输入的代码(检查json_last_error())...无需执行任何JS(或者您必须使用PhantomJS;但这不是您的情况)。

它必须是这样的:

JS部分(sample.js):

jQuery.post('sample.php', 
    'item': JSON.stringify(localStorage.getItem('itemList'))
);

PHP部分(sample.php)

$items = filter_input(INPUT_POST, 'item');
$decoded = json_decode($items, true);
var_dump($decoded);

【讨论】:

好的,我试试 此代码不符合我的要求。但这是我检查过的正确代码【参考方案2】:

localStorage 只存储字符串。 JSON.stringify() 是错误的,因为它需要一个 JSON 对象,而不是字符串作为输入。

【讨论】:

我应该只使用 JSON.parse 吗?? 你的命令看起来很奇怪。哪一行将 JSON 写入本地存储? 是的,JSON.parse 应该给你一个来自 localStorage 字符串的 JSON 对象。 只有JSON.parse[object object] 如果你想打印它,你必须再次对 JSON 对象进行字符串化。

以上是关于来自localstorage的JSON无法在php中解码的主要内容,如果未能解决你的问题,请参考以下文章

无法在 sencha touch 中的 localstorage 上设置嵌套的 json 数据

Javascript/jQuery/JSON/localStorage 游戏,无法按数字排序排名表

如何存储来自 localStorage 的客户端数据

将图像从 localStorage 上传到 PHP

无法在 Android 中显示来自 Php 文件的结果

带有 JSON、PHP 的 iOS