Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将json和特殊字符从php编码为javascript?_Javascript_Php_Jquery - Fatal编程技术网

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

如何将json和特殊字符从php编码为javascript?,javascript,php,jquery,Javascript,Php,Jquery,在我的数据库中,我将json保存在一个名为usp-custom-12的自定义字段中,如下所示: [{&quot;Mamma&quot;:[&quot;Papa&quot;]}] 然后我试着去解码 <?php $jsonTable = usp_get_meta(false, 'usp-custom-12'); ?> var data = <?php echo htmlspecialchars_decode($jsonTable); ?>

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

[{&quot;Mamma&quot;:[&quot;Papa&quot;]}]
然后我试着去解码

<?php
  $jsonTable = usp_get_meta(false, 'usp-custom-12');
?>
var data = <?php echo htmlspecialchars_decode($jsonTable); ?>;
和控制台日志错误:

未捕获的语法错误:意外的标识符

完整代码:

<?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))
    })
  })
});

var数据=”;
控制台日志(数据);
data=JSON.parse(数据);
data.forEach(obj=>{
Object.keys(obj.forEach)(key=>{
$('#newTable thead tr')。追加($('').text(键));
obj[key].forEach((e,i)=>{
if(!$(“#新表体tr:eq(“+i+”)).length)$(“).appendTo($(“#新表体”);
$(“#新表体tr:eq(“+i+”)。追加($('')。文本(e))
})
})
});

在这个JSFIDLE中,如果单击“保存表”,您将看到它生成一个与最上面的表相同的表,该表也在控制台中记录正确的json:

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

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

data.forEach(obj => {
   // Loop stuff here...
});
var数据=;
data.forEach(obj=>{
//循环的东西在这里。。。
});

问题在于字符串
中的引号“mama”
您需要使用
addslashes
方法对这些引号进行转义

尝试使用以下方法:

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

JSON到PHP:

json_decode($string);
json_encode($array);
如果将可选参数
$assoc
用作
true
-
json\u decode($string,true)
将在成功时返回关联数组

PHP到JSON:

json_decode($string);
json_encode($array);
PHP手册:

为什么要在数据库中存储
,而不是
?别胡说八道了。@CBroe不管原因是什么,我可以在保存它之前转换它。我只是想知道为什么这不起作用……html编码json字符串是有正当理由的,有时候我在数据属性中存储东西时会这样做。通常不会像tho.tbh那样长期存储它是一个wordpress插件,它存储的数据带有特殊字符,我确实可以在存储之前转换它,但因为这不是最大的问题,我也不想修改插件,我就这样离开了,只是用这里的答案来解析回声。@Occam'sRazor就在下面,他正在做JSON.parse来将字符串解析为JSON。确切地说,我在后面做JSON.parse。。我马上就接受。我知道,我做的是什么错了?是的,我的错+1.我没想到他会将数据从字符串转换成json,再转换成字符串,然后再转换成json。。没想到会发生这样的事。。应该仔细阅读。@Occam'sRazor是的,这是一个非常奇怪和漫长的道路,实际上我在做什么,你们能帮我简化吗?@rob.m-很高兴你们简化了它。未来的开发人员会感谢你的。是的,这很漂亮,因为你把所有的东西都放在了一行中,所以更加简化了。谢谢