Javascript/Ajax中的ViewBag数据没有正确传递

本文关键字:数据 Ajax 中的 ViewBag Javascript | 更新日期: 2023-09-27 18:18:22

我有以下脚本:

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

检查帧源,得到以下结果"Email": '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]]

Javascript/Ajax中的ViewBag数据没有正确传递

您的按钮类型为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"。这是行不通的。案例问题。