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

发送getJSON请求返回200正常无报错,但alert未触发如何解决?

问题原因及解决方案

核心问题定位

你的alert不弹出是因为$.getJSON要求响应内容必须是严格合法的JSON格式,且响应头符合JSON规范,只要出现以下任意一种情况就会静默失败,不会进入成功回调:

  1. PHP返回的内容中包含多余的空白、BOM头、报错信息等非JSON内容
  2. 你PHP代码中的错误判断逻辑存在语法问题,可能返回非JSON格式的纯文本
  3. 没有指定JSON响应头,jQuery无法正确识别返回内容类型

修改方案

前端代码修改

改用$.get先获取原始响应内容,同时完善错误提示,方便排查问题:

$.get('fetch.php', { getFiat: fiat, getCoin: coin, getLimit: limit, getAggregate: aggregate, getCall: 4 }, function(rawData) {
    // 弹出原始返回内容
    alert(rawData);
    // 如需操作解析后的JSON,可手动解析
    try {
        let parsedData = JSON.parse(rawData);
        alert(JSON.stringify(parsedData));
    } catch (err) {
        alert('JSON解析错误:' + err.message);
    }
}).fail(function (jqxhr, textStatus, error) {
   console.log('错误详情:', textStatus, error, jqxhr.responseText);
   alert('请求出错:' + error);
});

后端PHP代码修改

修正逻辑判断,添加JSON响应头,确保输出内容完全符合JSON规范:

<?php
// 注意:文件开头<?php前不能有任何空格、换行、BOM头,文件结尾建议删除?>避免多余空白输出
if($_GET['getCall'] == 4) {
    // 设置JSON响应头
    header('Content-Type: application/json; charset=utf-8');
    try {
        // 确认callAPI()无任何echo/print输出,否则会破坏JSON格式
        callAPI();
        $data = file_get_contents('https://min-api.cryptocompare.com/data/v2/histoday?fsym='.$_GET['getCoin'].'&tsym='.$_GET['getFiat'].'&limit='.$_GET['getLimit'].'&aggregate='.$_GET['getAggregate'].'&e=CCCAGG&api_key=[key]');
        $json = json_decode($data);

        // 修正错误判断逻辑,原逻辑isset返回布尔值和字符串比较永远为真
        if (isset($json->Response) && $json->Response === "Error") {
            echo json_encode(['status' => 'error', 'msg' => 'Broken duh..']);
        } else {
            echo $data;
        }
    } catch(Exception $e) {
        echo json_encode(['status' => 'error', 'msg' => $e->getMessage()]);
    }
}

额外排查点

  • 检查PHP是否开启了错误输出,所有warning、notice信息都会破坏JSON格式,建议测试阶段将错误信息写入日志,不输出到响应体
  • 确认PHP文件中除了上述代码之外没有其他输出内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:27:06