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

使用jQuery ajax()获取远程JSON失败,无法提取localidade字段求助

问题排查与修复方案

已定位的问题点

  • 缺失jQuery依赖:$.ajax是jQuery提供的专用方法,你需要先在当前script标签之前引入jQuery库,否则会直接报$ is not defined的错误,导致代码完全无法执行。
  • 无错误捕获逻辑:仅配置了success回调,请求超时、跨域、参数错误等异常场景下没有任何报错提示,无法定位具体问题。
  • 缺少返回值校验:该CEP查询接口在遇到无效CEP时会返回{"erro": true}的结果,此时不存在localidade字段,直接取值会抛出异常。
  • 传参格式不严谨:PHP输出调用代码时直接传递数字类型的CEP,遇到0开头的CEP时会自动丢失前缀0,导致查询失败。

修复后的代码示例

<!-- 请先在该script标签之前引入jQuery库,$.ajax方法依赖jQuery运行 -->
<script type="text/javascript">
function calculate(cep){
    var URL = "https://viacep.com.br/ws/";
    URL += cep;
    URL += "/json/";
    
    $.ajax({
        type: "GET",
        dataType: "JSON",
        url: URL,
        success: function(data){
            // 先判断是否查询成功再取值
            if(!data.erro && data.localidade){
                alert(data.localidade)
            }else{
                alert("CEP无效,未查询到对应城市信息")
            }
        },
        // 新增错误回调定位问题
        error: function(xhr, status, error){
            alert("请求出错:" + status + " - " + error)
        }
    });
}

<?php
    $cep = 35400000;
    // 转成字符串格式传递更稳妥,避免0开头的CEP被数字类型丢失前缀
    echo "calculate('$cep');";
?>
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:09:03