Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 若数据库中存在记录,则执行该条件_Jquery_Ajax_Asp.net Mvc_Entity Framework - Fatal编程技术网

Jquery 若数据库中存在记录,则执行该条件

Jquery 若数据库中存在记录,则执行该条件,jquery,ajax,asp.net-mvc,entity-framework,Jquery,Ajax,Asp.net Mvc,Entity Framework,我的SQL Server数据库中有一个包含列的表 loginID, loginUser, loginPassword 使用实体框架,我想检查给定的记录是否存在。我正在使用ASP.NETMVC和AJAX将数据发送到我的控制器方法 $("#loginBtn").click(function () { var loginUserRequest = $("#email").val(); var loginPassRequest = $("#pwd").val(); var l

我的SQL Server数据库中有一个包含列的表

loginID, loginUser, loginPassword
使用实体框架,我想检查给定的记录是否存在。我正在使用ASP.NETMVC和AJAX将数据发送到我的控制器方法

$("#loginBtn").click(function () {
    var loginUserRequest = $("#email").val();
    var loginPassRequest = $("#pwd").val();

    var loginTheUser = {
        loginID: 1,
        loginUser: loginUserRequest,
        loginPassword: loginPassRequest
    }

    $.ajax({
        type: "POST",
        url: "Home/LoginUser",
        data: loginTheUser
    });

});



用户名:
密码:
提交

我假设问题是您的
返回视图
重定向到操作
不工作?在没有正确处理返回到Ajax调用的结果的情况下进行Ajax调用

试试这样的我没有测试它,你可能不得不玩弄它

[HttpPost]
public ActionResult LoginUser(loginTable loginData)
{
    WebEntities entit = new WebEntities();
    var context = entit.loginTables.FirstOrDefault(lu => lu.loginUser == loginData.loginUser && lu.loginPassword == loginData.loginPassword);

    if (context == null)
    {  
      return new HttpStatusCodeResult(401, "Unauthorized!"); 
    }
    else
    {
        var url = Url.Action("Contact", "Home")
        return Json(url);
    }

}

 $.ajax({
    type: "POST",
    url: "Home/LoginUser",
    data: loginTheUser,
    success: function(response){  
      window.location.replace(response); 
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
      alert("Status: " + textStatus); alert("Error: " + errorThrown); 
    }      
});

最好的方法是确保充分利用ajax。从控制器返回json结果,以便轻松显示任何形式的消息。下面是你可以做的,以获得最好的。 首先,修改javascript代码,如下所示:

 $("#loginBtn").click(function () {
        var loginUserRequest = $("#email").val();
        var loginPassRequest = $("#pwd").val();
        var loginTheUser = {
            loginID: 1,
            loginUser: loginUserRequest,
            loginPassword: loginPassRequest
        };


        $.when(loginUser(loginTheUser, "/Home/LoginUser")).done(function (response) {

            if (response.error == true) {
                alert(response.message);
            } else {
                window.location.href = '/home/contact';
            }

        }).fail(function (err) {
            console.log(err);
        });

    });
从ajax响应中可以看到,我正在检查response.error是否为true,也就是说,我需要从控制器发送response.error。以下是修改后的控制器操作方法:

 [HttpPost]
    public ActionResult LoginUser(loginTable loginData)
    {
        WebEntities entit = new WebEntities();
        var context = entit.loginTables.Any(lu => lu.loginUser == loginData.loginUser && lu.loginPassword == loginData.loginPassword);

        if (!context)
        {
            return Json(new { error = true, message = "This user does not exist" }, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(new
            {
                error = false
            }, JsonRequestBehavior.AllowGet);                
        }
    }

我希望这能有所帮助。

一般来说,不要在数据库中以明文形式存储密码。对它们进行散列,然后对收到的密码进行散列并比较散列。谷歌关于在数据库中存储带有salt的密码。你实际上想知道该记录是否存在(是/否问题)。因此,您的查询应该是
entit.loginTables.Any(lu=>lu.loginUser==loginda.loginUser&&lu.loginPassword==loginda.loginPassword)
。这样效率更高。再一次,检查散列。那么,问题是什么?是的,知道散列只是作为一个测试,谢谢你。问题是,如果使用实体存在记录,那么请执行重定向等条件,例如。
 $("#loginBtn").click(function () {
        var loginUserRequest = $("#email").val();
        var loginPassRequest = $("#pwd").val();
        var loginTheUser = {
            loginID: 1,
            loginUser: loginUserRequest,
            loginPassword: loginPassRequest
        };


        $.when(loginUser(loginTheUser, "/Home/LoginUser")).done(function (response) {

            if (response.error == true) {
                alert(response.message);
            } else {
                window.location.href = '/home/contact';
            }

        }).fail(function (err) {
            console.log(err);
        });

    });
 [HttpPost]
    public ActionResult LoginUser(loginTable loginData)
    {
        WebEntities entit = new WebEntities();
        var context = entit.loginTables.Any(lu => lu.loginUser == loginData.loginUser && lu.loginPassword == loginData.loginPassword);

        if (!context)
        {
            return Json(new { error = true, message = "This user does not exist" }, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(new
            {
                error = false
            }, JsonRequestBehavior.AllowGet);                
        }
    }