【问题标题】:JSON from localstorage not able to decode in php来自localstorage的JSON无法在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 - 我可以知道为什么吗?

标签: javascript php json html local-storage


【解决方案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 对象进行字符串化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 2012-03-19
  • 1970-01-01
相关资源
最近更新 更多