核心是用json_encode()生成标准json字符串,内联传递时需htmlspecialchars()转义防xss,接口返回时须设content-type: application/json;务必加json_unescaped_unicode保中文,避免bom和资源类型导致解析失败。

PHP向JS传递JSON数据,核心是把PHP数组或对象转成JSON字符串,再安全地嵌入到HTML或通过接口返回给JS。关键在于编码正确、输出位置合适、避免XSS风险。
用json_encode()生成JSON字符串
PHP提供json_encode()函数,可将关联数组、索引数组、对象转为标准JSON格式。注意设置JSON_UNESCAPED_UNICODE防止中文被转义:
$data = ['name' => '张三', 'age' => 28, 'hobbies' => ['读书', '游泳']]; $json_str = json_encode($data, JSON_UNESCAPED_UNICODE);
结果是:{"name":"张三","age":28,"hobbies":["读书","游泳"]}
在HTML中内联传递(适合页面初始化数据)
把JSON字符串直接写进<script></script>标签,定义一个JS变量。务必用htmlspecialchars()转义,防XSS:
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
<script> const initData = <?php echo htmlspecialchars($json_str, ENT_QUOTES, 'UTF-8'); ?>; </script>
这样JS就能直接使用initData.name等属性。不要用echo $json_str裸输出,否则特殊字符(如"、)会破坏JS语法或引发安全问题。
通过AJAX接口异步获取(推荐用于动态数据)
PHP后端单独写一个接口脚本(如api.php),设置响应头并输出JSON:
<?php header('Content-Type: application/json; charset=utf-8');
$data = ['status' => 'success', 'list' => [['id'=>1,'title'=>'新闻一']];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
?>
JS用fetch请求:
fetch('api.php')
.then(res => res.json())
.then(data => console.log(data));
常见坑和注意事项
- 确保PHP文件本身保存为UTF-8无BOM格式,否则JSON开头可能出现不可见字符,导致JS解析失败
-
json_encode()对资源类型(如MySQL结果集)、不可序列化对象会返回false,需提前检查 - 若数据含HTML内容,JS端要用
textContent而非innerHTML插入,或再次转义 - 开发时可用
json_last_error_msg()快速定位编码失败原因
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










