首页 > 解决方案 > 本地存储中的数据在传递到 php 时被修改

问题描述

我正在尝试编写一个表单,在第一次提交时将表单字段写入本地存储。我有一个从本地存储读取数据的按钮。我想将此数据传递给 php,以便可以将其发布回表单中。

数据是 json 编码的,当我尝试将数据传递给 php 时,它已被损坏并且无法识别为 json 编码。

我正在发送到本地存储:

$encodedString= json_encode( array());

<script type="text/javascript">
  // Access the elements of the array
  var passed_array =[];
  var passed_array = ('<?= $encodedString; ?>');
  localStorage.setItem('<?= $hostname; ?>',JSON.stringify(passed_array));
</script>

从本地存储中检索:

<script>
    var starray = localStorage.getItem('<?= $hostname; ?>');
    //document.write(starray);
</script>

如果我使用从脚本内部输出starray

document.write(starray);

它是有效的 json 数据,可以解码,我将输出输入: https ://json_decode.onlinephpfunctions.com/进行测试。

当我尝试将 json 数据传递到 php 中以便我可以“json_decode”它时,它已被损坏并且不被视为有效的 json 格式。我正在使用以下方法传递给 php:

$starray = "<script>JSON.parse(document.write(starray));</script>";

输出document.write(starray);是有效的 json:

{"hostname":"aaaa","loopback_ip":"10.255.69.83","upstream_device":"","aapr_int_ip":"","aapr_bundle":"","aapr_int":"","linkid_west":"","aapr_exchange_west":"","ring_id":"","be_ip":"10.255.104.217","uplink_bundle":"10","phy_int":"","ospf_area":"","oob_ip":"","exchangename":"","siteaddress":"","city":"","state":null,"floor":"","suite":"","rack":"","user_id":""} 

来自的输出$starray = "<script>JSON.parse(document.write(starray));</script>";不是有效的 json:

string(53) "{"hostname":"aaaa","loopback_ip":"10.255.69.83","upstream_device":"","aapr_int_ip":"","aapr_bundle":"","aapr_int":"","linkid_west":"","aapr_exchange_west":"","ring_id":"","be_ip":"10.255.104.217","uplink_bundle":"10","phy_int":"","ospf_area":"","oob_ip":"","exchangename":"","siteaddress":"","city":"","state":null,"floor":"","suite":"","rack":"","user_id":""}" 

我不知道为什么要更改它以及如何解决它。任何帮助,将不胜感激!

标签: javascriptphpjsonlocal-storage

解决方案


推荐阅读