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

$.get请求返回空响应,求助Spring Boot+jQuery问题排查

排查jQuery $.get请求返回空响应的问题

咱们一步步来定位问题——从你给出的代码能看到,后端已经接收到请求了(控制台打印了日志),但前端拿到空响应,核心问题大概率出在后端返回数据的环节,下面是具体排查步骤:

1. 检查后端返回值的构造逻辑

你贴的后端代码里List<JSONObject> resp...是截断的,这很可能是关键问题:

  • 要确认你是否把获取到的respList数据正确存入了返回的JSONObject中?比如完整的逻辑应该是这样:
    @RequestMapping(path="demo/getResponseData") 
    public JSONObject getResponseData() throws IOException, JSONException{ 
        System.out.println("================================Called from JavaScript"); 
        HttpClientManager httpClientMgr = new HttpClientManager(); 
        // 假设这里是你获取数据的完整逻辑
        List<JSONObject> respList = httpClientMgr.fetchData(); 
        // 必须把数据包装到返回的JSON对象里
        JSONObject result = new JSONObject();
        result.put("data", respList); 
        return result;
    }
    
  • 如果你的代码没有完成数据赋值,或者没有把数据存入返回的JSONObject,后端就会返回空的JSON对象,前端自然拿到空响应。

2. 确认JSON序列化依赖是否正常

Spring Boot需要依赖JSON序列化工具来把JSONObject转换成响应体:

  • 如果你用的是spring-boot-starter-web,默认已经包含Jackson依赖,无需额外配置;如果是手动引入依赖,要确保下面的依赖存在(Maven示例):
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
  • 缺少JSON处理依赖会导致Spring Boot无法正确序列化返回对象,最终返回空响应或500错误。

3. 排查异常处理逻辑

你的方法声明了throws IOException, JSONException,但如果执行HttpClientManager逻辑时抛出异常,可能导致返回异常:

  • 建议添加try-catch块捕获异常并返回错误信息,方便排查:
    @RequestMapping(path="demo/getResponseData") 
    public JSONObject getResponseData(){ 
        try {
            System.out.println("================================Called from JavaScript"); 
            HttpClientManager httpClientMgr = new HttpClientManager(); 
            List<JSONObject> respList = httpClientMgr.fetchData();
            JSONObject result = new JSONObject();
            result.put("data", respList);
            return result;
        } catch (IOException | JSONException e) {
            e.printStackTrace();
            JSONObject errorResp = new JSONObject();
            errorResp.put("error", e.getMessage());
            return errorResp; // 返回错误信息,前端能直观看到问题
        }
    }
    

4. 直接测试后端接口

用Postman或浏览器直接访问http://localhost:你的端口/demo/getResponseData:

  • 如果直接访问也返回空,那100%是后端的问题;
  • 如果直接访问有数据,再排查前端:给$.get加上失败回调,捕获请求错误:
    var url = "demo/getResponseData" 
    $.get(url,function(responseData, status){ 
        console.log("status:", status);
        console.log("responseData类型:", typeof responseData);
        console.log("dtFetched:",responseData); 
        alert("status" + status); 
    }).fail(function(xhr, status, error) {
        console.log("请求失败原因:", error);
        console.log("服务器返回内容:", xhr.responseText);
    });
    

5. 检查跨域问题(如果前后端端口不同)

如果前端静态页面和后端服务不在同一端口,会存在跨域限制:

  • 在Spring Boot接口上添加@CrossOrigin注解允许跨域:
    @CrossOrigin(origins = "*") // 生产环境建议指定具体域名,不要用*
    @RequestMapping(path="demo/getResponseData") 
    public JSONObject getResponseData() throws IOException, JSONException{ 
        // 你的代码
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:31:51