zoukankan      html  css  js  c++  java
  • ajax的路径跳转

    ajax请求是局部刷新页面,所以在发送ajax请求后返回的内容会刷新页面中的局部,而不会进行页面跳转,

    即使使用重定向,也会将重定向后返回的内容刷新在原页面的局部(在F12的Network中可以查看请求的response返回的内容)

    如:

    1.在进行登陆时:

    如果登录失败时需要在原页面局部显示错误信息,因此需要使用ajax请求

    如果登陆成功则跳转到某个页面,此时使用ajax请求则无法实现跳转新页面的功能

    2.在添加新内容时:

    如果有异常信息则需要在原页面提醒,需使用ajax请求

    如果添加成功则可能需要跳转到列表页面

    解决方法:

    使用  location.href='请求路径'  家族

    具体实现如:

    前端:

     1 $.ajax({
     2   url:'/handle_login',
     3   data:$('#form-login').serialize(),
     4   type:'post',
     5   dataType:'json',
     6   success:function (json) {
     7     if(json.state==2000){
     8       // 注意:此处的index是Controller层的请求路径,
     9       // 由于在此例子中index页面是需要使用模板引擎解析的,所以需要使用Controller进行跳转
              2000为请求成功状态码
    11       window.location.href="/index"; 12     }else{ 13       formLogin.message=json.message; 14     } 15   } 16 });
     
    后端:只需要返回一个json对象,其中的state表示状态码,上述例子中state为2000时表示成功
     
    1 @RequestMapping("handle_login")
    2 @ResponseBody
    3 public JsonResult<Void> handleLogin(String phone, String password, String remember,
    4     HttpServletRequest request, HttpServletResponse response) {
    5   userService.loginUser(phone, password, remember, request, response);
    6   return JsonResult.ok();
    7 }
    此处的JsonResult是用于创建返回数据对象的类,ok是一个静态方法,表示操作成功,state为2000
     
    提示:前述中使用了家族这个词汇,原因是可以用于跳转的不仅仅window.location.href(location.href),
    还有top.location.href、parent.location.href等实现,甚至还有open方法打开新页面,
    其区别参考:https://www.cnblogs.com/xiao-lin-unit/p/13727116.html
     
  • 相关阅读:
    ros 使用笔记
    GLog 初始化说明
    面试-重写基础功能函数
    C++后台服务崩溃堆栈日志
    Linux下FTP服务器(vsftpd)配置:
    Windows 命令行解析工具(getopt)
    C/C++ 宏技巧
    Sublime Keymap 设置
    C++程序设计的技巧-Pimple的使用
    TCP的长连接与短连接
  • 原文地址:https://www.cnblogs.com/xiao-lin-unit/p/13727063.html
Copyright © 2011-2022 走看看