0

Javascriptを使用してフォームの値をあるページから別のページにPOSTする必要があります。

これで、ASP.NetやPHPなどのサーバー側テクノロジを使用して値を投稿できることがわかりましたが、サーバー側スクリプトを使用することは許可されていません。GETメソッドを使用すると、フォームの値をクエリ文字列として渡すことができますが、値が安全に渡されないことを認識しています(これは重要な要件です!)

以下にリストされている条件:

  1. このコードは、ページに投稿された値を取得し、ターゲットページに再投稿する必要があります。HTTP POSTのみ(取得しない)。
  2. いかなる場合でも、エラーであっても、リクエストはこのブリッジページで停止するべきではありません。
  3. スクリプトは、投稿された複数の値を処理する必要があります。
  4. 標準のJavaScriptを使用してみてください(サードパーティのライブラリはありません)
  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 に答える