2017-02-16 35 views
0

我创建了一个登录页面,我想重新加载我的验证码,但我不想丢失用户输入的信息。重新加载当前页面而不会丢失用户输入

文件:的Login.jsp

<body> 
<b>REGISTER</b> 
<p>Please fill up the form below.</p> 
<s:form action="register" method="post"> 
    <s:textfield label="Enter username" key="userId" maxlength="5" size="30" id="userId"/> 
    <s:password label="Enter password" key="userPsw" size="30" /> 
    <tr> 
     <td></td> 
     <td> 
      <img src="<c:url value='simple-captcha.png' />" /> 
      <br /> 
      <p onclick="something()">Refresh</p> 
     </td> 
    </tr> 
    <s:textfield label="Enter code" key="captchaResponse" size="30" /> 
    <s:submit value="Login" /> 
</s:form> 

文件:Javascript代码

function something() 
{ 
    window.location.reload(true); 
} 

window.onload = function() 
{ 
    var a = sessionStorage.getItem('userId'); 
    if(a !== null) $('#inputName').val(name); 

    var b = sessionStorage.getItem('userPsw'); 
    if(b !== null) $('#userPsw').val(b); 
} 

window.onbeforeunload = function() { 
    sessionStorage.setItem("userId", $('#userId').val()); 
    sessionStorage.setItem("userPsw", $('#userPsw').val()); 
} 

“刷新” 的文字,我想我的加载图形验证码,但我不我不想丢失我的数据。

我指的这个链接How to reload current page without losing any form data?

但仍然查询没有解决。

+2

可能是一个好主意,只是刷新,而不是整个页面的验证码,?要么创建一些iFrame东西,要么用例如ajax-stuff或类似的东西替换生成的验证码?关键是不刷新整个页面,只刷新应该重新生成的元素 - 因为没有必要刷新单个组件的整个页面:-)。 – vegaasen

+0

@vegaasen感谢您的建议。但我并不擅长JavaScript和jQuery。所以,如果你有答案,请转发给我。 –

+0

*注意*:您不应该在刷新客户端之后直接存储/重新使用用户输入。这为*反射XSS攻击*打开了大门,更多关于此漏洞的信息请访问:https://www.owasp.org/index.php/Cross-site_Scripting_(XSS) –

回答

2

使用不同的逻辑和语法后,如果他/她按F5或刷新页面,我发现存储用户输入的简单方法。

文件:Javascript代码

<script> 
    window.onload = function() 
    { 
     var a = sessionStorage.getItem('userId'); 
     if(a !== null){ 
      //alert(a); 
      document.getElementById("userId").value = a; 
     } 
    } 

    window.onbeforeunload = function() { 
     sessionStorage.setItem("userId", $('#userId').val()); 
    } 
</script> 
+0

当用户在网站页面之间导航时,onbeforeunload事件也被触发 –

相关问题