【发布时间】:2019-12-23 14:33:25
【问题描述】:
我目前正在尝试对从 HTML 数据属性给出的数据进行反序列化。该值来自我的数据库中的序列化字符串。
为了获得值,我正在从我的数据库中读取数据。之后,我将替换任何 " by ' 以防止 HTML 中的开始和结束标记出现问题:
<span data-value="<?= str_replace( '"', "'", $obj->value ) ?>"
这是一个最终看起来如何的示例:
<span data-value="a:2:{i:0;a:2:{s:5:'issue';s:4:'Test';s:10:'estimation';s:1:'5';}i:1;a:2:{s:5:'issue';s:4:'Impl';s:10:'estimation';s:1:'5';}}"></span>
我现在的计划是接收 JS 中的值并将其转换回一个数组,以便我可以循环它。我已经尝试过JSON.parse(),但失败了。你知道如何完成这项工作吗?
更新:
因为你们中的一些人告诉我,我的替换破坏了我的字符串,这是带有示例的原始版本:
jQuery( document ).ready( function ( $ ) {
let attr = $("span").attr("data-test");
console.log(JSON.parse(attr));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span data-test='a:2:{i:0;a:2:{s:5:"issue";s:4:"Test";s:10:"estimation";s:1:"5";}i:1;a:2:{s:5:"issue";s:4:"Impl";s:10:"estimation";s:1:"5";}}'></span>
【问题讨论】:
-
能否提供 print($obj->value);在这里?
-
您最好在 PHP 中反序列化它,然后将其转换为 JSON,然后将其放入
data-value属性中。 -
或者只是在页面加载时对数据发出 ajax 请求,然后在 java 脚本中处理数据
-
您的字符串替换会破坏反序列化
-
@NashPL 在这种情况下这是没有意义的。
标签: javascript php jquery arrays