0

我需要使用 Javascript 将表单值从一个页面发布到另一个页面。

现在,我知道我可以使用像 ASP.Net 或 PHP 这样的服务器端技术来发布值,但我不能使用任何服务器端脚本。我知道使用 GET 方法,我可以将表单值作为查询字符串传递,但这些值不会安全地传递(这是一个重要的要求!)

下列条件:

  1. 此代码应采用发布到页面的值并重新发布到目标页面。仅 HTTP POST(不获取)。
  2. 在任何情况下,即使是错误,请求也不应该在此桥接页面上停止。
  3. 该脚本需要处理多个发布的值。
  4. 尝试使用标准 javascript(没有 3rd 方库)
  5. 脚本需要在 IE、FF、Safari、大多数标准浏览器中工作

任何人都可以帮我找到解决方案或向我指出一些可以帮助我找到解决方案的资源吗?提前致谢。下面是将值作为查询字符串传递的代码。我可以修改它以满足我的上述要求吗?

形式

<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>
4

1 回答 1

1

POST 数据只能由服务器端代码处理。如果没有服务器端代码的帮助,您将无法在 javascript 中使用它们。

您只能使用GET或者您可以考虑使用cookie。但是另一方面,为什么要更改当前页面?!您可以使用 AJAX 加载更多数据而无需刷新,也无需发布或获取变量。

于 2013-01-30T22:21:38.690 回答