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