Ajax请求springMVC中controller

  当我们使用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

猜你喜欢

转载自blog.csdn.net/u010758410/article/details/80146156