Asp.net mvc 尝试通过AJAX Asp.net登录-MVC 3-不工作

Asp.net mvc 尝试通过AJAX Asp.net登录-MVC 3-不工作,asp.net-mvc,ajax,asp.net-mvc-3,jquery,Asp.net Mvc,Ajax,Asp.net Mvc 3,Jquery,我一直试图通过AJAX登录,但不知怎么的,它不起作用 我的控制器操作是 public string CheckLogin(Users checkuser) { if (db.CheckUserLoginDetails(checkuser.Email, checkuser.Password)) { return "Login Successful:" + checkuser.Email;

我一直试图通过AJAX登录,但不知怎么的,它不起作用

我的控制器操作是

       public string CheckLogin(Users checkuser)
       {
            if (db.CheckUserLoginDetails(checkuser.Email, checkuser.Password))
            {
                return "Login Successful:" + checkuser.Email;
            }
            else
            {
                return "Login UnSuccessful";
            }
        }
我对AJAX代码的看法是

        $(':submit').click(function (e) {
        var username = $('#username').val();
        var password = $('#password').val();
        var postdata =
        {
            'Email': username,
            'Password': password
        };
        $.post({
            url: 'http://localhost:7651/Home/CheckLogin',
            data: postdata,
            success: function (msg) {
                $('#Result').html(msg);
            }
        });
    });
我不知道代码中有什么错误…但有些人认为根本不需要调用控制器操作

  • 是的,我正在本地主机上运行
  • CheckLogin操作是我的主控制器
  • 路线被取消了
  • 将尝试在网络面板上查看。。我对此一无所知
  • 用户模型

        [Key]
        public virtual int UserID { get; set; }
    
        [Required(ErrorMessage="Required")]
        public virtual string FirstName { get; set; }
    
        [Required(ErrorMessage = "Required")]
        public virtual string LastName { get; set; }
    
        [Required(ErrorMessage = "Required")]
        [DataType(DataType.EmailAddress)]
        public virtual string Email { get; set; }
    
        [Required(ErrorMessage = "Required")]
        [DataType(DataType.Password)]
        public virtual string Password { get; set; }
    
        [DataType(DataType.Date)]
        public virtual DateTime JoiningDate { get; set; }
    
  • 我尝试了断点,但是调用没有进行,断点永远不会命中

  • 结果DIV在DOM中存在。。在索引视图中/在HTML.BeginForm()中
  • 不知道如何将错误添加到$.AJAX
  • 不过,谢谢你的清单。。。。请帮忙

    这里是风景

    @model Temp1.Models.Users
    
    @{
        ViewBag.Title = "Index";
    }
    
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.js") type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-1.5.1-vsdoc.js") type="text/javascript"></script>
    
    
    <h2>Login</h2>
    
    @using (Html.BeginForm("CheckLogin", "Home"))
    { 
        @*<p>
            <input type="text" id="username" value="" />
        </p>
    
        <p>
            <input type="password" id="password" value="" />
        </p>
        *@
    
        @Html.TextBoxFor(model => model.Email)
        @Html.PasswordFor(model => model.Password)
    
        <p>
            <input type="button" value="Login" id="btnLogin" />
        </p>
    
    
        <div id="Result">
    
        </div>
    
    
    }
    
    
    <script type="text/javascript">
    
        $('#btnLogin').click(function (e) {
            var postdata =
            {
                "Email": "temp@temp.com",
                "Password": "temp123"
            };
    
            $.ajax({
                url: '@Url.Action("CheckLogin","Home")',
                data: postdata,
                success: function (msg) {
                    $('#Result').html(msg);
                },
                error: function (data) {
                    $('#Result').html(msg);
                }
    
            });
    
        });
    
    </script>
    
    @model Temp1.Models.Users
    @{
    ViewBag.Title=“Index”;
    }
    登录
    @使用(Html.BeginForm(“CheckLogin”、“Home”))
    { 
    @*
    

    *@ @Html.TextBoxFor(model=>model.Email) @Html.PasswordFor(model=>model.Password)

    } $('#btnLogin')。单击(函数(e){ var postdata= { “电子邮件”:temp@temp.com", “密码”:“temp123” }; $.ajax({ url:'@url.Action(“CheckLogin”,“Home”), 数据:postdata, 成功:功能(msg){ $('#Result').html(msg); }, 错误:函数(数据){ $('#Result').html(msg); } }); });
    你的帖子留给我的问题多于答案。我会花一些时间调试

  • 您的网站是否在7651端口上运行
  • CheckLogin是否在您的家庭控制器中
  • 你的路线是默认路线,还是你的地图是什么样的
  • 如果您在FireBug中使用网络面板,您是否看到请求发出?打电话的结果如何
  • “用户”模型是什么样子的(可能是绑定错误)
  • 您是否在控制器的OneException方法中设置了断点
  • DOM中是否存在#Result(尝试在successfunction中发出警报)
  • 您是否尝试过在ajax调用中添加“error”属性并询问问题

  • 您的ajax提交url应该是这样的“/controler/action”。最佳实践是使用
    Url.Action(“actionName”、“ControlerName”)
    ,否则,当您部署到其他地方时,必须更改jQuery

     $.post({
            url: '@Url.Action("CheckLogin","Home")'
            data: postdata,
            success: function (msg) {
                $('#Result').html(msg);
            }
        });
    
    如果这样做不起作用,试着像这样改变你的行为

     public string CheckLogin( string Email, string Password){
    
    }
    
    并更改您的postData

     var postdata =
        {
            Email: username,
            Password: password
        };
    

    控制器操作返回的是字符串,而不是ActionResult,在本例中,它将是ContentResult

    尝试:


    哦,试着像上面那样更改你的postData。运气不好…:(你认为我需要阻止提交按钮来发布表单吗…比如e.preventDefault()啊,不要使用提交按钮。因为你不需要提交(你使用的是ajax post)。只要你用一个带有一些Id的HTML按钮并更改Jquery选择器,你就可以在firebugNo post Request中看到帖子……如果我必须使用AJAX,我只能在firebugNo中看到帖子。Beginform()instade of HTML.Beginform()?不管哪种方式,你都需要:)加载fiddler并确保请求得到响应。下一步,您可能需要使用路由调试器。好的。。。我不知道我做了什么,但现在它可以很好地处理虚拟数据…请告诉我如何从JqueryGo中的@Html.TextBoxFor(model=>model.email)检索值,以使用字符串而不是内容结果。重新编译并再次运行。如果它坏了。。。。将此标记为答案:)
    
    public ContentResult CheckLogin(Users checkuser)
       {
            if (db.CheckUserLoginDetails(checkuser.Email, checkuser.Password))
            {
                return Content("Login Successful:" + checkuser.Email);
            }
            else
            {
                return Content("Login UnSuccessful");
            }
        }