[英]Posting form values securely from one page to another on client-side using pure Javascript and NO server-side technology
我需要使用Javascript将表单值从一页发布到另一页。
现在,我知道我可以使用ASP.Net或PHP之类的服务器端技术来发布值,但不允许使用任何服务器端脚本。 我知道,使用GET方法,我可以将表单值作为查询字符串传递,但不会安全地传递这些值(这是一项重要要求!)
下面列出的条件:
谁能帮助我找到解决方案,或为我提供一些资源来帮助我找到解决方案? 提前致谢。 以下是用于将值作为查询字符串传递的代码。 我可以修改它以满足我的上述要求吗?
形成
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function goto_page(page) {
var usbnum = document.getElementById('usbnum').value;
var usbcode = document.getElementById('usbcode').value;
var q_str = '?usbnum=' + usbnum + '&usbcode=' + usbcode;
var url = page + q_str;
window.location = url;
}
</script>
</head>
<form id="form1" method="post">
<div>
USB No: <input name="usbnum" id="usbnum" type="text" size="80" /><br />
USB Code: <input name="usbcode" id="usbcode" type="text" size="80"/>
</div>
<a href="#" onclick="goto_page('bridgepage.html');">Next</a>
</form>
</body>
</html>
桥梁页
<html>
<head>
<title>Bridge Page</title>
<script type="text/javascript">
function get_params() {
var url = window.location.href;
var q_str_part = url.match(/\?(.+)$/)[1];
var val_pairs = q_str_part.split('&');
var params = {};
for (var i = 0; i < val_pairs.length; i++) {
var tmp = val_pairs[i].split('=');
params[tmp[0]] = typeof tmp[1] != 'undefined' ? tmp[1] : '';
}
return params;
}
function write_params() {
var params = get_params();
var txt = 'Hello ';
for (var i in params) {
txt += params[i] + ' ';
}
var body = document.getElementsByTagName('body')[0];
body.innerHTML += txt;
}
function write_params() {
var params = get_params();
var num_container = document.getElementById('usbnum');
var code_container = document.getElementById('usbcode');
num_container.innerHTML = params.usbnum;
code_container.innerHTML = params.usbcode;
}
</script>
</head>
<body onLoad="write_params()">
</body>
</html>
POST数据只能由服务器端代码处理。 没有 服务器端代码的帮助,您无法在javascript中使用它们。
您只能使用GET ,也可以考虑cookie 。 但是,另一方面,为什么要更改当前页面呢? 您可以使用AJAX加载更多数据而无需刷新,也无需发布或获取变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.