ASP.Net MVC Ajax.BeginForm不执行

在MVC5中使用Ajax异步提交表单时:Ajax.BeginForm不执行的问题总结,其实是对JQuery不熟悉,以及不仔细分析,给自己一个总结教训吧(网上冲浪查了很多解决思路和案例,结合多解决方案才解决)

Ajax提交的表单


@using (Ajax.BeginForm("ProcessLogin", "UserLogin", new AjaxOptions() { OnSuccess = "afterLogin" }))

处理成功方法JS

function afterLogin(data) {
    if (data == "ok") {
        window.location.href = "/Home/index";
    } else {
        alert(data);
        changeCheckCode();//验证码或用户名密码错误就重新生成一个验证码
    }
}

Controller中的Action

 public ActionResult ProcessLogin()
{
     string InputCode = Request["vCode"];
     string SessionCode = Session["VCode"] as string;
     Session["VCode"] = null;
     //解决Session失效的问题
     if (SessionCode == null)
     {
         return Content("验证码不能为空");
     }
     string name = Request["LoginCode"];
     string pwd = Request["LoginPwd"];
     if (InputCode != SessionCode)
     {
         return Content("验证码不正确");
     }
     short DelNormal = (short)SDK.Study.Net.Demo.Test.Enum.DelFlagEnum.Normal;
     var userInfo = UserInfoBll.GetEntites(u => u.UName == name && u.Pwd == pwd && u.DelFlag == DelNormal).FirstOrDefault();
     if (userInfo == null)
     {
         return Content("未找到用户信息");
     }
     Session["LoginUser"] = userInfo;
     return Content("ok");

 }

大家也看到了,其实到目前看上面的代码没有任何的问题,谁能想到引用JS文件也是有很大讲究的

  1. 第一个问题,引用顺序错误,jquery.unobtrusive-ajax.js这个文件是依赖jquery-1.10.2.min.js的,这里顺序错误,前端会提示xxxx is not defind,这里总记的是所有的JS文件应该都是依赖JQuery的,
    在这里插入图片描述
 <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
 <script src="~/Scripts/jquery.validate.min.js"></script>
 <script src="~/Scripts/jquery-1.10.2.min.js"></script>

修改为

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
  1. 解决第一个问题,现在又发现第二问题,JQuery的版本问题,看了介绍说jquery.unobtrusive-ajax.js中的live方法在1.7后就不在被JQuery支持了,更改为on的使用方式了,这里我将JQuery降版本处理了,重新引用JQuery1.7版本
    在这里插入图片描述
    修改为
    <script src="~/Scripts/jquery-1.7.1.min.js"></script>
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>

至此问题得到解决
原文1 JQuery顺序问题
原文2 版本问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值