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)
{
}

它返回一个空值。如果您对为什么这可能不起作用有任何想法,或者需要更多解释/代码,请告诉我,我很乐意提供。

谢谢

编辑:

提交我的其他信息的原始表单代码

 [[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

你的按钮是 type submit

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

默认情况下,当单击按钮时,它将执行传统的 HTTP POST 以将您的表单提交到您的控制器。

您已经捕获了 click 事件并添加了 Ajax 调用,但是,您并没有阻止默认表单提交的发生。我认为当您看到空email值时,您会在控制器上看到表单提交。

尝试false从您的点击事件返回:

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

这应该会阻止表单提交。

编辑:

此外,您的按钮称为“sendMsg”,但您将单击事件挂钩到“sendMSG”。那是行不通的。案件很重要。

于 2013-06-13T19:46:59.510 回答