3

フォームアクションについて基本的な質問があります。

ここで以下のコードを検討してください。構文がある場合は無視してください。

<form action="demo_form.asp" method="get">
 <a href="test.asp">Code testing</a>
 First name: <input type="text" name="fname" /><br />
 Last name: <input type="text" name="lname" /><br />
 <button type="submit">Submit</button><br />
</form> 

フォームが送信されるとdemo_form.aspが呼び出され、demo_form.aspで以下のようにフォームの変数を処理できます。

request.GET('fname')

test.aspがHREFを介して呼び出されたときに、フォーム内の変数を処理するにはどうすればよいですか。同じGETまたはPOSTメソッドを使用できますか?

4

2 に答える 2

1

ハイパーリンクを介してデータを送信できる唯一の方法は、GETリクエストを使用することです。もちろん、これには、クエリパラメータとしてハイパーリンクに追加される代わりに、フォーム内のすべてのフィールドが含まれます。

もちろん、a要素を変更して、代わりにonclickハンドラーとJavaScriptを使用して、DOMメソッドを使用してフォームからデータを取得し、href属性を動的に変更してから、その特定のアンカータグのクリックイベントを発生させることもできます。これもGETリクエストになります。

HTML:

<form action="test.asp" id="theForm">
     <a href="test.asp?" id="link">Code testing</a>
     First name: <input type="text" name="fname" /><br />
     Last name: <input type="text" name="lname" /><br />
</form>

jQuery:

$('#link').click(function() {
    var href = "";
    $('#theForm > input').each(function(event) {
        event.preventDefault();
        href = $('#link').attr("href") + "&" + 
            $(this).attr("name") + "=" + $(this).attr("value");
        $('#link').attr("href", href);
    });
    $(this).click();  // or window.location = $(this).attr("href");
});

DOMとブラウザがイベントを処理する方法についてさらに学ぶための演習として以外に、これがどのような価値をもたらすかはわかりません。

何を達成しようとしているのかを知らなければ、フォーム自体を使用しているだけではない理由を知るのは困難です。

于 2012-05-09T02:04:04.803 に答える
0

test.aspリンク(またはあなたが言うようにhref)を介して呼び出す場合、GETメソッドを使用してのみ変数を処理できます。したがって、たとえば、を持っている場合test.asp?fname=bob&lname=smith、それらのGET変数はtest.aspで使用できます。

POSTデータではこれを行うことはできません。

于 2012-05-09T02:03:48.387 に答える