0

アカウントの有効化方法を作成しています。すべてがうまく見えます。しかし、私は何かが欠けていると思います..私のアクティベーション方法は2回機能します。私はウェブが初めてです。

これが私の方法です

[HttpPost]
public ActionResult Active(string code)
{            
     return Content("Your account Successfully Activated");
}

ここにhtml&jqueryコードがあります

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        Yout Aktivasyon Code:
        <div class="editor-field">
            <input type="text" id="ActivationCode"/>            
        </div>

        <input type="submit" value="Active"/>
    </fieldset>
}

<script type="text/javascript">

    $(function () {

        $('form').submit(function () {

            $.ajax({
                url: "@Url.Action( "Active", "Account")",
                type: "post",
                data: { code: $('#ActivationCode').val() },
                success: function (result) {
                    console.log("successful\n" + result);
                },

                error: function (request, status, error) {
                    console.log("error");
                }
            });
        });
    });
</script>

Active メソッドにブレークポイントを配置し、"code" パラメータをチェックします。フォームを送信すると、アクティブなメソッドがトリガーされ、コードにはテキストボックスにある値が含まれます。F5 を押して続行すると、Active メソッドが再びトリガーされ、コード値が null になります

なぜそれが2回機能するのか、自分の間違いを見つけることができませんか?

4

2 に答える 2

2

デフォルトの動作を妨げていないため、ajaxリクエストとその後の通常の投稿を行っている可能性があります。デフォルトの動作を防止してみてください。

$(function () {

    $('form').submit(function (e) { // Add the event parameter -> e

        // Prevent the default behavior.
        e.preventDefault();

        $.ajax({
            url: "@Url.Action( "Active", "Account")",
            type: "post",
            data: { code: $('#ActivationCode').val() },
            success: function (result) {
                console.log("successful\n" + result);
            },

            error: function (request, status, error) {
                console.log("error");
            }
        });

        // Also return false for the default behavior.
        return false;
    });
});

jQueryドキュメントから:

event.preventDefault()
このメソッドが呼び出された場合、イベントのデフォルトのアクションはトリガーされません。

戻るfalseことは、実際に発砲しないようにイベントに指示する方法でもあります。

于 2013-02-07T09:03:26.180 に答える
1

F5 を押すと、最後のリクエストで受信したウィンドウの内容が更新されます。あなたの場合、「アカウント/アクティブ」アクションに送信された POST でした。しかし、2回目の試行でデータ(テキストボックスの内容)が送信されなかったと思われます。

ブラウザのネットワーク コンソールを開き (IE9 の場合は F12 キーを押し、[ネットワーク] タブに移動して [キャプチャの開始] を押します)、サーバーに送信されたリクエストの本文を確認します。最初の試行でのみデータを送信する場合は、ワインダーしません。

于 2013-02-07T08:57:37.907 に答える