我有以下脚本。
<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)
{
}
它返回一个空值。如果您对可能无法使用的原因有任何想法,或需要更多解释/代码,请告诉我,我很乐意提供。
由于
编辑:
提交我的其他信息的Orignal表单代码
[[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]]
答案 0 :(得分:1)
您的按钮属于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”。那不行。案件很重要。