javascript - 本地存储中的数据在传递到 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":""}"
我不知道为什么要更改它以及如何解决它。任何帮助,将不胜感激!