来自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>";
来自$items
的json_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 数据