2

1 つのフォームが「GET」メソッドを使用し、もう 1 つのフォームが「POST」を使用する場合、同じページにある 2 つのフォームを送信するにはどうすればよいですか。各フォームには同じアクションがあり、同じ次のページに移動します。助けが必要。みんなの助けに感謝します。

1 つのボタンで送信された異なるメソッドを使用する以下の 2 つのフォームを取得するにはどうすればよいですか?

<form method="POST" id="Form1" action="nextpage.html">

<input type="text" size="50" name="text_input">

<input type="submit" value="Submit">



<form method="GET" id="Form2" action="nextppage.html">

<input type="text" size="50" name="text_input">

<input type="submit" value="Submit">
4

5 に答える 5

2

これを行う 1 つの方法は、各フォームに隠しフィールドを追加することです。例えば、

<form action="action.php" method="get">
    <input type="hidden" name="id"  value="form1">
    Username: <input type="text" name="user">
    <input type="submit" value="Submit">
</form>

<form action="action.php" method="post">
    <input type="hidden" name="id" value="form2">
    Username: <input type="text" name="user">
    <input type="submit" value="Submit">
</form>

スクリプトでは、id の値を確認するだけです。もう 1 つの方法は、サーバーに送信された要求がポストまたは取得であったかどうかを確認することです。

于 2012-11-15T05:04:00.857 に答える
1

AJAX を再帰的に使用するか、すべてのデータを 1 つのフォームに収集して送信します。

単純なフォーム送信では、最初のインスタンスでページがリダイレクトされ、2 番目のインスタンスからのデータが失われます。サーバー側を完全に制御できる場合は、POST データを含むフォームのみを送信でき (私の例では)、送信する前にアクション属性にform2GET を適用できます。

つまり:

<form name="form1" id="form1" action="index.php" method="GET">
    <input type="text" name="foo" value="bar" />
    <input type="submit" value="Submit" />
</form>

<form name="form2" id="form2" action="index.php" method="POST">
    <input type="text" name="foo" value="bar" />
</form>

<script type="text/javascript">
    var f = document.getElementById('form1');
    f.onsubmit = function() {
        var t = f.getElementsByTagName('input'),
            l = t.length,
            i = 0,
            r = [];
        for (i = 0; i < l; i++) {
            if (!t[i].name) continue;
            r.push(t[i].name + '=' + encodeURIComponent(t[i].value));
        }
        var p = document.getElementById('form2');
        if (r.length) p.action += '?' + r.join('&');
        p.submit();
        return false;
    }
</script>

しかし、AJAX は、必要に応じて新しい機能で簡単に拡張できる、より優れたより洗練されたソリューションであるため、私はこれの非同期的な方法に投票します。

于 2012-11-15T05:14:31.707 に答える
1

1 つのボタンで 2 つのフォームを使用することは、実際には意味がありません。有効な html ではありません。

于 2012-11-15T05:16:15.727 に答える
1

POST フォームを使用して送信し、ページに POST しますが、ページ nextpage.html に投稿する代わりに、「nextpage.html?var1=value&var2=value」のようなページに投稿します。
次のように JavaScript を使用します。

<form method="POST" id="Form1" action="nextpage.html">
<input type="text" size="50" name="text_input">
<input type="button" value="Submit" onclick="push();">
</form>

<form method="GET" id="Form2" action="nextpage.html">
<input type="text" size="50" name="text_input" id="name_input">
<input type="button" value="Submit" onclick="push();">
</form>

<script>
function push() {
    document.getElementById('Form1').action = "nextpage.html?text_input="+document.getElementById('name_input').value;
    document.getElementById('Form1').submit();
}
</script>

URL バーに送信するものに ?、&、= などの英数字以外の文字を挿入しないように注意してください。GET 変数と POST 変数がページに送信されます。

于 2012-11-15T05:29:51.883 に答える
0

HTTP の仕組みについて少し学ぶ必要があります。ブラウザーは、通常は GET または POST のいずれかである「要求」を実行し、応答本文は HTML として解析され、Web ブラウザーに表示されます。

2 つのフォームを同時に投稿しても意味がありません。2 つの HTTP リクエストが開始されるからです。ブラウザで新しい場所として使用する必要があるのはどれですか?

于 2012-11-15T05:02:25.263 に答える