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

时间:2013-06-13 19:15:39

标签: c# javascript ajax asp.net-mvc

我有以下脚本。

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

1 个答案:

答案 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”。那不行。案件很重要。