You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress中将PHP多维数组传递给JavaScript?

解决PHP JSON数组传递到JS/JQuery的问题

我来帮你搞定这个JSON传递的问题!你当前的代码有两个关键错误,咱们一步步修正:

问题分析

你最后尝试的代码:

var multidate_array = JSON.parse('<?php $list_allDates; ?>');

存在两个核心问题:

  1. PHP未输出变量:<?php $list_allDates; ?>只是引用了变量,但没有通过echo输出它的值,导致JS拿到的是空字符串,JSON.parse自然会报错。
  2. 字符串转义风险:即便加上echo,直接把JSON放在单引号里,如果JSON内容包含单引号、换行符等特殊字符,会直接破坏JS的字符串语法,引发解析失败。

正确的解决方案

方法1:直接将JSON作为JS对象赋值(推荐)

json_encode生成的标准JSON本身就是合法的JS对象字面量(你的场景是日期字符串,完全兼容),所以不需要额外用JSON.parse,直接输出赋值即可:

<?php
// 先确保数组和JSON转换逻辑正确
$listDates = [
    ['start_date' => '00:00 12-04-2017', 'end_date' => '00:05 22-05-2018'],
    // 其他日期项...
];
$list_allDates = json_encode($listDates);
?>

<script>
var multidate_array = <?php echo $list_allDates; ?>;
// 验证:在浏览器控制台查看数组
console.log(multidate_array);
</script>

这种方式最简洁,也彻底避免了转义问题。

方法2:安全使用JSON.parse(特殊场景)

如果因为某些原因必须用JSON.parse,可以通过json_encode再次转义,把原始JSON字符串转换成符合JS语法的安全字符串:

var multidate_array = JSON.parse(<?php echo json_encode($list_allDates); ?>);

这里的json_encode($list_allDates)会把原始JSON转义成JS可识别的字符串格式,比如双引号、换行符都会被正确处理,不会出现语法错误。

额外排查步骤

  1. 查看页面源代码:确认PHP输出的内容是完整、合法的JSON格式,没有语法错误。
  2. 验证PHP的JSON转换:在PHP中用var_dump($list_allDates)或者json_last_error()检查json_encode是否成功(如果数组包含非法UTF-8字符,json_encode会返回false)。
  3. 浏览器控制台调试:打开开发者工具的Console面板,查看是否有语法错误或解析报错,快速定位问题。

内容的提问来源于stack exchange,提问作者cafequijano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:56:49