layui表单提交ajax请求不能正确触发

在使用layui表单上传的时候,发现login.do的请求不能正确被触发,后端可以接收到前端传递过来的值但是地址栏的地址却依然是login.jsp,以至于无法正常跳转页面

地址栏

img

后端接收值

img

网络活动中也没有检测到login.do的请求

img

如果直接在地址栏输入login.do带参或者在form里直接写action和method都可以正常跳转,但是使用ajax请求不可以,请带佬们解惑

补充:发现没有贴js代码和后端代码

<script>
        layui.use(function(){
          var form = layui.form;
          var layer = layui.layer;
          var $ = layui.$;
          // 提交事件
          form.on('submit(demo-login)', function(data){
            var field = data.field; // 获取表单字段值
            var username = field.username;
            var password = field.password;
            
            /* alert("11"); */
            // 此处可执行 Ajax 等操作
            // $.get("login.do?username="+username+"&password="+password+"");
              $.ajax({
                type:"post",
                url:"login.do",
                dataType:"text",
                async:false,
                data:{"username":username,"password":password},
                success:function(res){
                        layer.alert("欢迎"); 
                    
                }
            })   
             return false; // 阻止默认 form 跳转
          });
        });
    </script>

package com.sk.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;

public class LoginServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(req, resp);
    }
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        
        //    获取用户名和密码
        String username = req.getParameter("username");
        System.out.println(username);
        String password = req.getParameter("password");
        System.out.println(password);
        
        //    创建安全管理工厂
        //    Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:jdbcrealm.ini");
        //    创建安全管理器
        //    SecurityManager securityManager = factory.getInstance();
        //    在当前环境安装这个安全管理器
        //    SecurityUtils.setSecurityManager(securityManager);
            
        //    将获取到的用户名和密码封装到token里
        UsernamePasswordToken upToken = new UsernamePasswordToken(username,password);
            
        //    创建subject
        Subject subject = SecurityUtils.getSubject();
        
        try {
            System.out.println("cccc");
            subject.login(upToken);
            System.out.println("1");
            if (subject.isAuthenticated()) {
                resp.sendRedirect("index.jsp");
                //    resp.getWriter().print("{\"code\":\"0\"}");
            }else{
                
            }    
        } catch (Exception e) {
            System.out.println("qwe");
        }
        
        
    }
}


ajax请求是不会主动刷新页面的,如果想刷新页面,可在ajax的success函数里写代码,简单示例如下。

$.ajax({
    type: 'get',
    url: 'data.json',
    success: function(res) {
        // 这里写页面跳转的代码
        location.href = '要跳转到的url地址'; // 跳转页面
    }
});