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

jQuery Ajax请求JSON解析报错:unexpected non-whitespace character如何解决?

问题原因与解决办法

问题根源

你的PHP代码同时调用了myFunctionA()和myFunctionB(),两个函数都通过echo输出了独立的JSON字符串,最终返回给前端的是两个JSON对象直接拼接的内容,比如:

{"error":0,"message":"Hello World"}{"error":0,"message":"Hello again"}

这种格式不符合JSON规范,所以$.parseJSON()解析时触发语法错误。

解决办法

根据你的需求选择以下方案:

方案1:只保留一个函数的返回结果

直接删掉其中一个函数调用,比如只保留myFunctionA();,这样PHP只会输出单个合法的JSON对象,前端就能正常解析。

修改后的PHP代码:

myFunctionA();

function myFunctionA() {
   echo json_encode(array('error' => 0, 'message' => "Hello World"));
}

function myFunctionB() {
    echo json_encode(array('error' => 0, 'message' => "Hello again"));
}

方案2:需要同时返回两个函数的结果

修改PHP逻辑,让两个函数返回数组而非直接输出,然后合并成一个统一的数组再输出JSON:

// 合并两个函数的返回值并输出
$result = array(
    'functionA' => myFunctionA(),
    'functionB' => myFunctionB()
);
echo json_encode($result);

// 修改函数,返回数组代替直接echo
function myFunctionA() {
   return array('error' => 0, 'message' => "Hello World");
}

function myFunctionB() {
    return array('error' => 0, 'message' => "Hello again");
}

此时后端返回的是合法的嵌套JSON,前端解析后可以通过response.functionA和response.functionB分别获取两个函数的结果。

额外优化

jQuery的$.post可以自动解析JSON,只要后端添加响应头声明内容类型,同时前端指定dataType为json,就不用手动调用$.parseJSON():

  • PHP添加响应头:
    header('Content-Type: application/json');
    
  • 前端修改代码:
    $.post("ajax/myFile.php", {myValue: "test"}, function(response) {
      console.log(response); // 直接使用解析好的对象
    }, 'json');
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:31:04