0

次のスクリプトがあります。

<script>
$("#sendMSG").click(function () {
    $.ajax({
        type: "POST",
        url: '@Url.Action("Action", "Controller")',
        dataType: "JSon",
        data: { "Email": '@ViewBag.Email' },

        success: function (data) { 
             document.getElementById("Output").innerHTML = data.Message;},
        error: console.log("It did not work"),
    });
});
</script>

フレームソースを調べると、次の「メール」が届きます: 'mdabsk@vsd.com' },

私にとっては、それを取得していることを意味します。ただし、次のコントローラーを呼び出すと

public JsonResult ThankYou(string Email)
{
}

null 値を返します。これが機能しない理由について何か考えがある場合、またはさらに説明やコードが必要な場合は、お知らせください。喜んで提供します。

ありがとう

編集:

私のその他の情報を送信するための元のフォーム コード

 [[Form_SmsPhone]]
  <form action="\Controller\Action" id="smsPhone" method="post">
  [[/Form_SmsPhone]]
    [[Block_Sms]]
    <div class="input-append">
        <input id="phonenumber" style="width: 115px;" name="phonenumber"       type="text">
        <button class="btn" type="submit" value="Send"   id="sendMsg">Send</button>
    </div>
    <p id ="Output"></p>
    [[/Block_Sms]]
  [[Form_End]]
    </form>
  [[/Form_End]]
4

1 に答える 1

1

ボタンのタイプはsubmitです。

<button class="btn" type="submit" value="Send"   id="sendMsg">Send</button>

デフォルトでは、ボタンがクリックされると、従来の HTTP POST を実行してフォームをコントローラーに送信します。

クリック イベントをトラップし、Ajax 呼び出しを追加しましたが、既定のフォーム送信の発生を停止していません。emailnull値が表示されているときに、コントローラーでフォームの送信が表示されていると思います。

falseクリック イベントから戻ってみてください。

$("#sendMSG").click(function () {
    $.ajax({
        ...
    });
    return false;
});

これにより、フォームが送信されなくなります。

編集:

また、ボタンは「sendMsg」と呼ばれますが、クリックイベントを「sendMSG」にフックします。それはうまくいきません。大文字と小文字が重要です。

于 2013-06-13T19:46:59.510 に答える