Ajax请求springMVC中controller

在SpringMVC+Spring+Hibernate的Web开发中,Ajax请求与常规页面跳转方式不同。Ajax请求返回的是纯文本流,无法直接实现页面跳转。解决办法是在客户端使用JavaScript处理响应并刷新页面。文章介绍了Ajax的工作原理,并提供了前后端的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  当我们使用springmvc+spring+hibernate进行web开发时,在一个controller的方法中,只要返回页面名字的字符串即可实现页面跳转,但是当我们使用ajax异步调用controller的时候,再使用这种方法进行页面跳转就会发现不灵了
  Ajax请求springMVC中controller:Ajax请求的特点是,一旦发送一个请求,服务器接受响应之后,用response对象写回数据,Ajax实际上就是通过XMLHttpRequest来发送请求对象向服务器发送异步请求,从服务器获取数据,然后使用JS来操作DOM而更新页面。也就是说,服务器端返回的是纯文本流,可以是xml格式,html格式,js格式,也可以是字符串格式。
  但总结一句话,客户端获取ajax异步获取结果后,不是直接显示在页面上,而是必须要先由js处理,完成之后才能显示在页面。这就可以解释我们的问题了,当Ajax请求后,返回的只能是字符流,不是页面。所以要使页面跳转,我的解决方案是,前台用js刷新。

前台的ajax请求:

//$("#edit_customer_form").serialize()序列化,避免中文乱码。
function updateCustomer() {
            $.post("<%=basePath%>customer/update.action",$("#edit_customer_form").serialize(),function(data){
                alert("客户信息更新成功!");
                window.location.reload();
            });
        }

服务端对应的处理函数。

@RequestMapping("/update")
    public String update(Customer customer)throws Exception{
        customerService.updateCustomerById(customer);
        return "customer";
        //若是ajax请求,则此时返回的字符串已经丧失了页面跳转的功能了,
        //因为每个ajax请求发送成功之后,都会返回一个response响应,
        //响应完成,数据交互也已经结束了,就不会再走springMVC的响应了,此时只是把逻辑视图当成了普通的字符串返回了。
        //此时想完成页面的跳转的话,可以使用前台的页面跳转功能,但是controller不能返回void
    }

参考
https://www.cnblogs.com/boycelee/p/6243646.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值