无法解析PHP输出的JSON至JavaScript,示例代码本地运行出错求助
解决本地JS+PHP JSON解析错误的方法
常见问题原因及解决步骤:
本地未用PHP服务器运行项目
直接双击HTML文件打开的话,浏览器不会解析PHP代码,会把demo_file.php的原始文本返回给JS,自然无法解析成JSON。
解决:- 用XAMPP/WAMP这类本地服务器软件,把项目放到服务器根目录(比如XAMPP的
htdocs文件夹),再通过http://localhost访问 - 或者用PHP内置服务器:打开终端进入项目根目录,执行
php -S localhost:8000,然后在浏览器访问http://localhost:8000/你的HTML文件名.html
- 用XAMPP/WAMP这类本地服务器软件,把项目放到服务器根目录(比如XAMPP的
请求路径不匹配本地项目结构
JS里的"/php/demo_file.php"是服务器根目录下的绝对路径,如果你的本地项目里没有php子文件夹,或者PHP文件位置不对,就会请求到404页面(HTML内容),导致JSON解析失败。
解决:- 核对项目结构:比如HTML在根目录,PHP文件在
php子文件夹里,路径才正确;如果PHP和HTML同目录,改成"demo_file.php"即可。
- 核对项目结构:比如HTML在根目录,PHP文件在
PHP输出了非JSON内容
要是PHP文件有语法错误、警告,或者文件开头/结尾有多余空格、BOM头,返回的内容就不是纯JSON,解析必然报错。
解决:- 检查PHP代码的语法,确保引号、分号都正确
- 在PHP开头添加
header('Content-Type: application/json');,明确告诉浏览器返回的是JSON - 加上
ob_clean();清空输出缓冲区,避免额外内容干扰
修正后的示例代码:
JavaScript代码
const xmlhttp = new XMLHttpRequest(); xmlhttp.onload = function() { // 先打印响应内容,方便排查问题 console.log(this.responseText); try { const myObj = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myObj.name; } catch (err) { console.error("JSON解析失败:", err); } } // 根据本地项目结构调整路径,示例为HTML在根目录、PHP在php子文件夹 xmlhttp.open("GET", "php/demo_file.php"); xmlhttp.send();
PHP代码
<?php header('Content-Type: application/json'); ob_clean(); $myObj = new stdClass(); $myObj->name = "John"; $myObj->age = 30; $myObj->city = "New York"; $myJSON = json_encode($myObj); echo $myJSON; ?>
内容的提问来源于stack exchange,提问作者David98761324
相关产品推荐
相关产品推荐

