繁体   English   中英

如何将json和特殊字符从php编码为javascript?

[英]How to encode json and special characters from php to javascript?

在我的数据库中,我将json保存在一个名为usp-custom-12的自定义字段中,如下所示:

[{"Mamma":["Papa"]}]

然后我尝试解码

<?php
  $jsonTable = usp_get_meta(false, 'usp-custom-12');
?>
var data = <?php echo htmlspecialchars_decode($jsonTable); ?>;

但是它给了我

 var data = "[{"Mamma":["Papa"]}]";

和控制台日志错误:

Uncaught SyntaxError:意外的标识符

完整代码:

<?php
  $jsonTable = usp_get_meta(false, 'usp-custom-12');
?>
var data = "<?php echo htmlspecialchars_decode($jsonTable); ?>";

console.log(data);

data = JSON.parse (data);
data.forEach(obj => {
  Object.keys(obj).forEach(key => {
    $('#newTable thead tr').append($('<th>').text(key));

    obj[key].forEach((e, i) => {
      if(!$("#newTable tbody tr:eq("+i+")").length) $("<tr>").appendTo($("#newTable tbody"));
      $("#newTable tbody tr:eq(" + i + ")").append($('<td>').text(e))
    })
  })
});

在这个jsFiddle中,如果单击保存表,您将看到它生成一个与顶部表相同的表,这也是在控制台中登录正确的json: https//jsfiddle.net/fbh0o67o/74/

$jsonTable包含一个带有html实体编码的JSON字符串,因为它已经是JSON,你只需解码html etities并按原样回显它。 不需要JSON解码,不需要引用。 只需HTML解码并将其回显到您的javascript中。

var data = <?php echo htmlspecialchars_decode(usp_get_meta(false, 'usp-custom-12')); ?>;

data.forEach(obj => {
   // Loop stuff here...
});

问题是字符串"mama"引号需要使用addslashes方法来转义那些引号。

尝试使用以下内容:

var data = "<?php echo addslashes(htmlspecialchars_decode($jsonTable)); ?>";

JSON到PHP:

json_decode($string);

如果使用可选参数$assoctrue - json_decode($string, true)将在成功时返回关联数组。

PHP到JSON:

json_encode($array);

PHP手册: json_encode() json_decode()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM