javascript进行重定向页面时用window.href.location为啥有时不传参数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript进行重定向页面时用window.href.location为啥有时不传参数?相关的知识,希望对你有一定的参考价值。

从页面A.jsp跳转到页面B.jsp的时候,跳转如下
window.location.href = '/zyAssess/B.jsp?tendClass=11111';
但是到了B页面的时候,url只剩下/zyAssess/B.jsp,后面的参数tendClass消失了
后台也接收不到tendClass
奇怪的是 在另一个页面C.jsp写同样的window.location.href = '/zyAssess/B.jsp?tendClass=11111';却能正确传输参数
这是为什么

页面和页面之间是不能这样传值的,你要先把值放到作用域里面传过去。这个动作通常是由后台来完成的。像你这样 window.location.href = '/zyAssess/B.jsp?tendClass=11111'; 是传不过去的。因为你的值不在作用域里面。你是无法获取到的。所以建议你通过action传过去,获取通过servlet传过去,要买你在页面上写小脚本。总之你的值要先放到作用域,然后转发到你的页面上,你才能获取到。 参考技术A 你B页面是不是又做了重定向追问

没有 我执行那段js代码时 页面的url没有参数 如果我手动给页面地址栏加参数就能正常接收参数

追答


function test()
window.location.href="bb.jsp?username=1";


这么写是没问题的,可以拿到username的值啊

本回答被提问者采纳
参考技术B 检查下页面的提交方式看看提交方式是post还是get,如果不一样将A页面的提交方式改成和C页面一致的。

关闭警报框后如何重定向页面?

我一直试图告诉浏览器在关闭警报框后将用户重定向到其他位置,但我尝试过的方法似乎都没有工作,所以我问你是否可以检查我的代码并告诉你如果你看到我的需求可能的解决方案,我。这段代码只是一个练习,我正在练习和测试javascript。

到目前为止,我已尝试使用这些,但没有任何效果。

window.location.href(); 
window.location.replace(); 
window.location.assign(); 
location.href(); 
location.replace(); 
location.assign();

HTML代码:

<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="javascript.js"></script>
</head>
<body>
<div id="container" align="center"><br />
<form>
Nickname: <input type="text" id="nickname" name="nickname"><br />
Password: <input type="password" id="password" name="password"><br />
<button onclick="login();">Login</button>
</form>
<p id="result:"></p><br />
</div>
</body>
</html>

Javascript代码:

function login(){
    var nickname = document.getElementById("nickname").value;
    var password = document.getElementById("password").value;
    var result = document.getElementById("result");
    var error = "Invalid Credentials!";
    var sucess = "Login Sucess!";

    if (nickname == "neo", password == 123){
        alert(sucess);
        location.assign("welcome.html");
    }
    else if(nickname == 22){
        confirm("Awesome!");
        location.replace("welcome.html");
    }
    else if(nickname == ""){
        alert("Nickname is required!");
    }
    else{
        alert(error);
    }
}
答案

实际上你只需要在按钮上添加type =“button”,你的代码就可以了:

<button type="button" onclick="login();">Login</button>

原因是按钮在表单内自动作为type =“submit”。

另一答案

您应该使用window.location.href作为赋值(使用=)而不是将其作为函数处理(使用()):

if (nickname == "neo", password == 123){
    alert(sucess);
    window.location.href = "welcome.html";
}
else if(nickname == 22){
    confirm("Awesome!");
    window.location.href = "welcome.html";
}

希望这有帮助!

另一答案

你应该尝试以下方法

window.location.href = 'welcome.html';
另一答案

使用此JavaScript代码:

function login(){
 var nickname = document.getElementById("nickname").value;
 var password = document.getElementById("password").value;
 var result = document.getElementById("result");
 var error = "Invalid Credentials!";
 var sucess = "Login Sucess!";

 if (nickname == "neo", password == 123){

  if (alert(sucess)) {} else {
   window.location = "welcome.html";
  }
 }
 else if(nickname == 22){
  if (confirm("Awesome!")) {
   window.location = "welcome.html";
  }
 }
 else if(nickname == ""){
  alert("Nickname is required!");
 }
 else{
  alert(error);
 }
}

以上是关于javascript进行重定向页面时用window.href.location为啥有时不传参数?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 相对页面重定向?

用js代码 window.location.href 重定向后,如何通过浏览器返回定向之前的页面?

硬刷新浏览器页面,然后使用 javascript 重定向到 url

Javascript:重定向到不同的子域

Javascript:重定向到不同的子域

AngularJS - 如何在整个页面加载时进行重定向?