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

PHP RESTful API中GET请求JSON经$.ajax解析异常问题求助

解决AJAX解析PHP返回JSON时得到"1"的问题

我来帮你排查这个问题——后端返回的JSON明明是正确的,但前端解析后却得到"1",大概率是这几个细节没处理好:

1. 给AJAX请求指定dataType并去掉手动JSON.parse

你当前的AJAX代码没有指定dataType,jQuery会自动尝试推断响应类型,但如果服务器返回的HTTP头里没有明确标记Content-Type: application/json,jQuery可能会把响应当成普通文本处理,甚至出现解析异常。

直接显式设置dataType: 'json',jQuery会自动帮你完成JSON解析,不用再手动调用JSON.parse():

$.ajax({
    method: "GET",
    url: "api.php/loadComment/" + $('#ad_id').val(),
    dataType: 'json', // 显式指定响应为JSON类型
    done: function(data) {
        console.log(data); // 直接使用解析好的对象
        console.log(data.data); // 这里就能拿到你的评论数组了
    },
    error: function(xhr) {
        // 加个错误回调,方便排查问题
        console.log("实际返回内容:", xhr.responseText);
    }
});

2. 确保PHP端输出纯JSON并设置正确响应头

有时候后端看似返回了正确的JSON,但可能存在额外输出(比如代码开头的空格、换行,或者其他echo/print语句),这些会破坏JSON结构;另外,没有设置正确的Content-Type头,也会导致前端解析出错。

修改你的PHP代码,加上响应头并确保输出后立即终止脚本:

case 'GET':
    // 设置正确的JSON响应头
    header('Content-Type: application/json');
    $comments["data"] = Comment::returnAll($db, $request[1]);
    echo json_encode($comments);
    exit; // 终止脚本,防止后续代码产生额外输出
    break;

3. 排查路由是否正确匹配

你提到解析后得到"1",也有可能是你的请求路径api.php/loadComment/xxx没有正确匹配到GET分支,后端返回了其他内容(比如某个操作的成功状态码"1")。

通过上面AJAX的error回调,你可以打印出xhr.responseText,确认实际返回的内容是不是你在Network面板里看到的JSON。如果不一样,那就要检查你的路由解析逻辑,确保$method和$request[1]的取值是正确的。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:54:07