javascript 无法直接访问 php 变量,需通过 php 在页面渲染时将数据注入 js:①用 json_encode() 输出到 script 标签;②存入 data- 属性再用 dataset 读取;③通过 ajax 异步请求 php 接口获取 json 数据。

用 PHP 输出 JS 变量(最常用)
在 HTML 的 <script></script> 标签内,用 PHP 的 echo 或 print 把变量转成 JS 可识别的格式(注意加引号、转义特殊字符):
- 字符串要加单/双引号,并用 json_encode() 最安全(自动处理引号、换行、中文等)
- 数字、布尔值可直接输出,但用 json_encode() 更统一可靠
<script> var userName = <?php echo json_encode($user_name); ?>; var userAge = <?php echo json_encode($user_age); ?>; console.log(userName, userAge); // 如:'张三', 28 </script>
把 PHP 数据塞进 HTML 元素属性(适合简单场景)
把变量存在 HTML 标签的自定义属性(如 data- 属性),JS 再用 dataset 读取:
- 适合只传一两个值,且不想在 JS 里写 PHP 代码的场合
- 避免 XSS 风险:PHP 输出前仍建议用 htmlspecialchars() 或 json_encode()
<div id="user-info" data-name="<?php echo htmlspecialchars($user_name); ?>" data-id="<?php echo (int)$user_id; ?>">
</div>
<script>
const el = document.getElementById('user-info');
const name = el.dataset.name;
const id = el.dataset.id;
</script>
用 AJAX 异步获取 PHP 数据(适合动态或敏感数据)
不把数据直接写进页面,而是让 JS 发请求,PHP 接口返回 JSON:
- 适合用户登录后才可访问的数据,或需权限校验的场景
- PHP 接口文件(如 get-user.php)末尾输出:header('Content-Type: application/json'); echo json_encode($data);
- JS 用 fetch 或 AJAX 请求该地址并解析 JSON
fetch('get-user.php')
.then(res => res.json())
.then(data => {
console.log(data.name, data.email);
});
注意事项(容易出错的地方)
- 别在 JS 文件(.js 后缀)里写 —— Web 服务器默认不解析 JS 文件里的 PHP
- 不要拼接字符串:var x = '';(没转义易报错或 XSS)→ 改用 json_encode()
- 确保 PHP 变量已定义且非 null,否则 json_encode(null) 会输出 null,JS 中是合法值但可能不符合预期
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











