js ajax 提交表单数据以及asp.net MVC5后端接收问题

1、前端使用js ajax json 传递数据,注意要避免表单自动提交,需添加

 <form onsubmit="return false;">
<script type="text/javascript">
            $(document).ready(function () {
                $("form").submit(function () {
                    $.ajax({
                        url: '/Home/Login',//接收数据后端路径
                        type: 'post',//提交方式
                        dataType: 'json',//传递数据类型
                        data: $("form").serializeArray(),//不用手动将表单数据写成json格式,这个函数直接帮你序列换转成json格式,当然传文件不能直接这么写
                        success: function (data) {//后端返回的数据,参考下面后端代码理解
                            if (data.Result == 1) {
                                alert(data.PromptMsg);
                                self.location = document.referrer;//asp自动返回并刷新
                            } else if (data.Result == 0) {
                                alert(data.PromptMsg);
                            }
                        },
                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            alert(errorThrown);
                        }
                    });

                });
            });
</script>

2、asp.net MVC 后端实现接收、处理数据并返回数据

(1)当你第一访问页面时可能不需要处理任何数据,那就可以使用[HttpGet]注解的Action来显示页面

当页面传来数据后一定是以post方式提交,所以他必然会使用[HttpPost]注解的Action方法处理数据并返回

[HttpGet]
        public ActionResult Login()
        {
            return View();
        }

(2)这里是处理前端json数据,函数仍然需要使用参数的方式接受数据,而且参数名字必须与表单标签name属性名字一致(这是我传递json数据时直接使用了序列化,也就是key-value里的key即为表单标签里的name),必须有参数,因为没有参数他就会和[HttpGet] 注解的方法矛盾。



        [HttpPost]
        public ActionResult Login(string loginEmail, string loginPassword)
        {
             //这里的AjaxResult是我自定义的类,我觉得使用这样一个工具类会方便很多,详细参考第    三步
            AjaxResult ajaxResult = new AjaxResult();
            if (loginEmail == "" || loginPassword == "")
            {
                ajaxResult.Result = DoResult.Failed;
                ajaxResult.PromptMsg = "请将信息填全!!";
            }
            else
            {
                user u = new user();
                u.Email = loginEmail;
                u.Password = loginPassword;
                user findUser = Op_User.FindUser(u);
                if (findUser != null)
                {
                    ajaxResult.Result = DoResult.Success;
                    ajaxResult.PromptMsg = "登录成功";
                    //设置登录状态
                    Session["USER"] = findUser;
                }
                else
                {
                    ajaxResult.Result = DoResult.Failed;
                    ajaxResult.PromptMsg = "邮箱或者密码不对";
                }
            }
            return Json(ajaxResult);
        }

(3)工具类 AjaxResult,第二步使用了,

namespace ProtectAnimal.Models
{
    public class AjaxResult
    {
        public AjaxResult() { }
        
        //提示信息
        public string PromptMsg { get; set; }
        //返回成功与否
        public DoResult Result { get; set; }
        //返回类型
        public object RetValue { get; set; }
        //这里你可以自定义很多数据类型根据你的需要
    }
    public enum DoResult
    {
        //同样这里你可设置很多值
        Failed=0,
        Success=1,
        OverTime=2,
        UnSession=3
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值