Javascript 如何在登录后忽略重定向并重定向其他页面

Javascript 如何在登录后忽略重定向并重定向其他页面,javascript,html,ajax,redirect,Javascript,Html,Ajax,Redirect,我想知道如何在执行登录后忽略服务器的转移,然后将您重定向到另一个页面,对此进行了大量研究,但找不到真正有效的内容,已经尝试使用window.location、window.location.href、window.location.assign,但都不起作用。 到目前为止,我所能做的最好的事情就是使用window.open打开一个新页面,打开我想要的站点,但我一直被重定向 <HTML> <HEAD> <TITLE>ECORI LOGIN</TITLE&g

我想知道如何在执行登录后忽略服务器的转移,然后将您重定向到另一个页面,对此进行了大量研究,但找不到真正有效的内容,已经尝试使用window.location、window.location.href、window.location.assign,但都不起作用。 到目前为止,我所能做的最好的事情就是使用window.open打开一个新页面,打开我想要的站点,但我一直被重定向

<HTML>
<HEAD>
<TITLE>ECORI LOGIN</TITLE>
<script language="JavaScript" type="text/javascript">
window.onbeforeunload = function(){
        window.open("mypage.html");
    }
</script>

<BODY>
    <FORM action="http://mylogin.com/security/jspring_security_check" method="post" >
    Usuario: <INPUT type="text" name="j_username"><BR>
    Senha: <INPUT type="password" name="j_password"><BR>
    <INPUT type="submit" value="Login" onclick="function">
    </FORM>
</BODY>
</HTML>

ECORI登录
window.onbeforeunload=函数(){
window.open(“mypage.html”);
}
乌萨里奥:
森哈:
欢迎所有的帮助,我的英语很抱歉。
非常感谢

提交表单的行为基本上是告诉浏览器离开页面,将表单数据发送到
action
所在的任何位置,最后到达该页面。但您有两种选择:

  • 使用JavaScript拦截您的登录,而使用AJAX进行登录。一旦服务器响应了AJAX请求(取决于响应),您就可以使用JavaScript将用户重定向到任何您想要的位置

  • 您似乎在使用Java。我相信,一旦登录成功,您可以更改配置以重定向到所需页面。这是一种比破解JS解决方案更安全的方法。就像

    form -(submit)-> jspring_security_check -(server redirect)-> final destination
    

  • 我看到一条建议使用AJAX的评论,这只是另一种方法。xhr基本上是AJAX,但没有铃铛和哨子。老实说,您应该使用AJAX。它干净多了

     function doPost(url, method, callback, data){
        xhr = new XMLHttpRequest();
        xhr.open(method, url, true);
        xhr.send(data);
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                if(typeof callback() != 'undefined')
                    callback(xhr.responseText);
            }
        }
    }
    function handleLogin(respObj){
    console.log(respObj);
    //Do what needs to be done here after form submit...
    }
    $(function(){
        $("form input:button").on('click', function(e){
            formid = "loginForm";
            var form = document.getElementById(formid);
            var formdata = new FormData(form);
            doPost("http://mylogin.com/security/jspring_security_check", "post",     "handleLogin", formdata);
        });
    });
    
    我把你的表格改成:

    <FORM method="post" id="loginForm">
        Usuario: <INPUT type="text" name="j_username"><BR>
        Senha: <INPUT type="password" name="j_password"><BR>
        <INPUT type="button" value="Login">
    </FORM>
    

    恐怕这是不可能的,因为重定向是在访问者离开站点之后发生的。您可以尝试通过AJAX而不是默认方法发送表单提交,并让您的应用程序以适当的方式对响应的内容做出反应。有人可以帮助我吗?我没有访问服务器的权限,所有操作都应该在客户端完成,这会使操作变得困难=/有人会想到如何解决此错误问题。在“access Control Allow Origin”中,请求的资源源“null”上存在“access Control Allow Origin”标头,因此不允许访问。“或者只能解决访问服务器的问题?您好Joseph,谢谢您的回答,但是如果我没有访问servlet的权限,如何创建此函数,我没有想法=/对不起,我是AJAXvery中的begginer非常感谢,您帮了我很多忙,我真的不知道该怎么做,我唯一的问题是错误500:“Origin'null'因此不允许访问。响应的HTTP状态代码为500。“
    formid = "loginForm";
    var form = document.getElementById(formid);
    var formdata = new FormData(form);
    $.ajax({
    url: 'http://mylogin.com/security/jspring_security_check',
    data: formdata,
    processData: false,
    contentType: false,
    type: 'POST',
    success: function(data){
    handleLogin(data);
    }
    });