博主自学框架不久,经验不多,导致出现非常多的细节,低级问题。本着不要脸精神,为广大自学同胞提供一些低级错误的错误原因以及解决方案。以下带来 springmvc框架下前端html中window.location失效的原因以及解决方案。
首先普通html中window.location跳转失败的原因有以下几个:
1.js中代码字符错误。
2.触发跳转的控件在form表单中或者在submit控件中跳转。
对于上述两个问题的解决方式:
1.正确js如下,请认真核对。
<script>
function test(){
alert("测试");
window.location="www.xxx";
}
</script>
2.在使用form表单时,可以直接使用form表单中 action=“”属性进行跳转,如果此方法不能满足需求。可以将form表单
改为 div,然后将submit改为button。
以上普通html中跳转失败,无响应问题百度基本上都有,下面介绍重点。
对于在实际项目中,跳转后,html中window.location失效的原因

然后返回login.html登录页面。但这个方法下的跳转后的地址是 原来用户输入访问的路径,用代码验证,跳转钱输出
window.location 信息
观察如上两张图,可有看出,当用户连接时间超时,或者被管理员踢下线时,用户再次刷新页面,或者直接访问localhost:8180/html/main.html时候,是会直接转发到login页面,但地址依据是localhost:8180/html/main.html。此时用户进行登录操作,
此句代码是相当于不执行的。所以会出现正确登录,但却无法跳转到main.html页面
两个解决方案
1.进行判断,清空window.location
但以上方案并不完美。
2.从根源出发。我们首先要明白,重定向和跳转,区别和概念自行百度,博主不过多赘述(其实我也不是很懂),其中转发地址栏没有变化,而重定向地址栏有变化,这个区别是关键。在servlet中调用重定向的语句如下:
response.sendRedirect("new.html");//重定向到new.html
根据此句,将项目中登录验证中转发改为重定向。
输入localhost:8180/html/main.html 返回页面如下

其中地址也变成了固定的localhost:8180/sys/toLogin
此时,window.location就可以正确跳转了。
ps:第一次写博客,有点紧张,若是文中存在错误,欢迎各位大佬指正。谢谢