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

无法解析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
  • 请求路径不匹配本地项目结构
    JS里的"/php/demo_file.php"是服务器根目录下的绝对路径,如果你的本地项目里没有php子文件夹,或者PHP文件位置不对,就会请求到404页面(HTML内容),导致JSON解析失败。
    解决:

    • 核对项目结构:比如HTML在根目录,PHP文件在php子文件夹里,路径才正确;如果PHP和HTML同目录,改成"demo_file.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:15:41