From php json_encode to jquery decode

From php json_encode to jquery decode

本文关键字:to jquery decode encode php json From      更新时间:2023-09-26

我使用一个众所周知的"hack"(json编码函数)来防止一些字符扰乱我的html,我从API接收一个可以包含单引号或双引号(以及其他特殊字符)的描述字段。因此:

<div class="someThing" data-fulldescription=<?=json_encode($textFromApi);?>>
  ...
</div>

现在,我使用jquery读取该数据字段,然后将其打印到div:中

$('#brand-modal-content').html($(this).parents('.someThing').data('fulldescription'));

问题是,引号现在由PHP函数编码,一些字符被"''u00e8"或"''u00f9"取代,有没有办法使用jquery重新格式化文本?

您以一种非常错误(甚至不安全)的方式将内容注入HTML。改为:

data-fulldescription="<?=htmlspecialchars(json_encode($textFromApi));?>"

这样,无论里面有什么,JSON都将被正确编码并安全地注入;然后,你可以这样解码:

var decoded = JSON.parse($(this).parents('.someThing').data('fulldescription'));

这些步骤的组合将完美地保留JSON,无论它代表什么(如果假设它是字符串,您可以使用快捷方式,但为什么不总是100%安全?)。然后,可以对解码后的值执行任何操作。