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

Spring MVC通过AJAX收发参数问题:AJAX请求控制器无响应

排查AJAX请求Spring控制器无响应的问题

我来帮你排查下这个AJAX请求无响应的问题,大概率是这几个环节出了状况:

1. 先确认请求路径是否正确

你的AJAX里用了相对路径../tmax,这个路径是基于当前页面的URL来解析的,很容易因为页面层级不对导致请求地址错误(比如出现404)。举个例子:如果当前页面地址是http://localhost:8080/your-app/pages/detail.html,那../tmax会指向http://localhost:8080/your-app/tmax,但如果你的控制器实际映射的是http://localhost:8080/tmax(没有项目上下文路径),那路径就错了。

建议改成绝对路径更稳妥,比如:

// 替换成你的项目实际上下文路径,没有的话直接写"/tmax"
url: "/your-app/tmax",

如果是在JSP页面里写的AJAX,还可以用EL表达式动态获取上下文路径:

url: "${pageContext.request.contextPath}/tmax",

2. 控制器返回值可能不符合AJAX的预期

你用ModelAndView作为返回值,这是Spring用来返回完整视图(比如JSP页面)的,而AJAX通常期望的是一段HTML片段、JSON或者纯文本。如果你的ModelAndView指定的视图不存在,或者渲染后的内容不是你需要的,甚至触发了服务器错误(500),都会导致AJAX的success回调不触发,但你没写错误回调,所以看不到任何反馈。

如果你的需求是返回HTML片段填充到#testdata里,建议改成直接返回字符串并加上@ResponseBody注解:

@RequestMapping(value = "/tmax", method = RequestMethod.POST)
@ResponseBody // 这个注解会让Spring直接把返回值作为响应体返回,而不是渲染视图
public String tmax(@RequestParam("id") String id) {
    // 这里写你的业务逻辑,生成要返回的HTML内容
    String resultHtml = "<div>处理完成,ID是:" + id + "</div>";
    return resultHtml;
}

要是你坚持用ModelAndView,那得确保视图存在,并且视图解析器配置正确(比如前缀、后缀设置对了)。

3. 给AJAX加上错误回调,看具体错误信息

你的AJAX代码只写了success回调,一旦请求失败(404、500、403等),完全看不到任何提示。建议加上error和complete回调,同时打开浏览器开发者工具(F12)查看请求详情:

$(".secs li a").on("click",function(e){ 
    e.preventDefault(); 
    var id = $(this).data("value");
    console.log("当前ID:" + id); // 先确认ID是否正确获取
    $.ajax({ 
        url:"../tmax", 
        type:"POST", 
        data:{id:id}, 
        success: function(response){ 
            $("#testdata").html(response); 
        },
        error: function(xhr, status, error) {
            // 打印错误信息,方便排查
            console.log("请求出错了!");
            console.log("状态码:" + xhr.status);
            console.log("错误描述:" + error);
            console.log("服务器响应内容:" + xhr.responseText);
        },
        complete: function() {
            console.log("请求已完成");
        }
    }) 
})

打开开发者工具的Network标签,找到这个请求,就能看到请求的实际地址、状态码、响应内容,这是定位问题最快的方式。

4. 检查Spring的核心配置是否到位

确保你的Spring配置类上有@EnableWebMvc注解(Java配置方式),或者XML配置里有<mvc:annotation-driven/>。这个配置会自动注册请求参数解析器、视图解析器等必要的Bean,要是没加的话,Spring可能无法正确解析你的POST请求参数,或者处理返回值。

5. 确认参数是否正确传递

在AJAX发送前,用console.log(id)打印一下获取到的ID值,确认不是空值或者不符合预期的类型。虽然Spring的@RequestParam会自动转换参数类型,但如果ID是空值,可能会触发参数必填的错误(默认@RequestParam是必填的,要是允许空值可以加required = false)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:52:20