[asp.net-mvc]使用 JSON 与 JQuery 和 MVC 的问题

发布时间: 2017/3/25 2:34:18
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我要执行我的控制器从 javascript 使用 jquery......这是我正在执行的 jquery 代码。

<script type="text/javascript">
 $('form').submit(function (e) {
  e.preventDefault();
  $.ajax({
   type: "POST",
   url: $(this).attr("action"),
   data: $(this).serialize(),
   contentType: "application/json;charset=utf-8",
   dataType: "json",
   success: function(msg) {
    var obj = msg.deserialize();
    alert(msg);
   }
  });
 });
</script>

现在它会执行我的行动。

这里是我控制器类,它执行一个样本。

    [AcceptVerbs(HttpVerbs.Post)]
    [Url("Account/LogOn")]
    public virtual ActionResult LogOn(string Username, string Password)
    {
         if (Username == "test")
         {
             return Json(new { Success = true });
         }
         else
         {
             return Json(new { Success = false });
         }
    }


问题是......当我运行的方法。它只是试图下载一个"登录"文件,其中包含的结果。如何把它放回在 jquery 所以正确的方式是处理可以了它,我试过添加成功标记,试图签Msg但它即使不运行它的对象

解决方法 1:

把你里面的脚本 document.ready 之前试图注册任何事件处理程序,如 DOM 可能有尚未加载︰

<script type="text/javascript">
    $(function() {
        // ... copy - paste your script here
    });
</script>

你也不需要设置 dataType ,jQuery 知道它从内容类型从服务器的响应标头。另一种说法︰ msg 对象传递给成功处理程序已经是一个 JSON 对象︰ 你不需要解析/反序列化︰

<script type="text/javascript">
$(function() {
    $('form').submit(function() {
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            success: function(msg) {
                alert(msg.Success);
            }
        });
        return false;
    }
});
</script>

我为您推荐的解决方案是使用jquery.form插件。由于它 js 代码会看起来一样简单︰

<script type="text/javascript">
$(function() {
    $('form').ajaxForm(function(msg) {
        alert(msg.Success);
    });
});
</script>

很奇妙的东西。你不必费心序列化反序列化的数据,防止默认事件,它甚至可以处理文件上传

官方微信
官方QQ群
31647020