使用纯Javascript和NO服务器端技术在客户端将表单值安全地从一个页面发布到另一个页面

时间:2013-01-30 22:13:21

标签: javascript post

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

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

下列条件:

  1. 此代码应采用发布到页面的值 重新发布到目标页面。仅限HTTP POST(未获取)。
  2. 在任何情况下,即使是错误,请求也不应该在此桥页上停止。
  3. 脚本需要处理多个发布的值。
  4. 尝试使用标准javascript(无第三方库)
  5. 脚本需要在IE,FF,Safari,大多数标准浏览器中工作
  6. 任何人都可以帮我找到解决方案或指向一些资源,帮助我找到解决方案吗?提前致谢。下面是将值作为查询字符串传递的代码。我可以修改这个以满足上述要求吗?

    FORM

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

    BRIDGE PAGE

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

1 个答案:

答案 0 :(得分:1)

POST数据只能由服务器端代码处理。 无法您可以在javascript 中使用它们,而无需服务器端代码的帮助< /强>

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