首页 > 解决方案 > 从登录页面的文本字段获取数据时,如何在 Asp.net mvc 中为 HttpGet Api 编写一个 Url

问题描述

在我的项目中,我使用了三个关系架构(UI--> Controller--> DAL)。起初,我创建了 HttpPost Api,它通过 UI 和邮递员都可以正常工作。但是当我创建登录 HttpGet Api 以检查数据库上的用户是否可用时,我的 Api 在邮递员上工作正常,我刚刚检查了 Api 的响应(从控制器到 DAl 的流),但是当我想通过网络使用 HttpGet Api登录页面不起作用(从 UI 流向控制器)。可能是我在必须登录页面文本字段 ID 的 Url 中犯了错误。请解决我的查询。

这是我的代码:

控制器:

 [HttpGet] 
    public string login(string UserName, string Password)
    {
        Users objUser = new Users();
        bool bResult = objUser.ValidateUser(UserName, Password);
        string strResponse = "";
        if (bResult)
        {
            strResponse = "Login Successful";
        }
        else
        {
            strResponse = "Failed to Login.";
        }

        return strResponse;  
    }

达尔:

 public bool ValidateUser(string strUserName , string strPassword)
    {
        string strQuery = "SELECT * FROM [dbo].[user] WHERE user_name = '" + strUserName + "' and password_ = '"+ strPassword + "'";

        DataTable dtb = GetDataFromQuery(strQuery);
        if (dtb != null && dtb.Rows.Count > 0)
        {
            return true;
        }
        else
        {
            return false;
        }

阿贾克斯:

function httpMVCGetRequest(url, callback, errcallback) {

url = window.location.origin + url;
$.ajax({
    type: "GET",
    url: url,
    contentType: "application/json; charset=utf-8",
    dataType: "jsonp",
    async: true,
    success: callback,
    error: errcallback
});

}

Ajax 函数调用,在这里,当有人输入登录数据时,我得到了 ka Url,用于从我的登录文本字段中获取数据。

function callSignIn() {

httpMVCGetRequest('/users/login?UserName=$("#nameuser").val()&Password=$("#passsignin").val()', callbackSignIn);  

}
function callbackSignIn(data) {    
alert(data);}

HTML(登录页面):

<div class="login-form">
            <div class="sign-in-htm">
                <div class="group">
                    <label for="user" class="label">Username</label>
                    <input id="nameuser" type="text" class="input">
                </div>
                <div class="group">
                    <label for="pass" class="label">Password</label>
                    <input id="passsignin" type="password" class="input" data-type="password">
                </div>
                <div class="group">
                    <input id="check" type="checkbox" class="check" checked>
                    <label for="check"><span class="icon"></span> Keep me Signed in</label>
                </div>
                <div class="group">

                    <li class="button"><a onclick="callSignIn();"><center>Sign In</center></a></li>
                </div>
                <div class="hr"></div>
                <div class="foot-lnk">
                    <label for="tab-3">Forgot Password?</label>
                </div>
            </div>

当我在邮递员上写这个网址时,它会给我成功登录的回应

http://localhost:3672/api/users/login?UserName=abc&Password=e123

但是当在ajax函数上写这个Url来获取用户的输入数据时它卡住了..

'/users/login?UserName=$("#nameuser").val()&Password=$("#passsignin").val()'

标签: asp.netasp.net-web-api

解决方案


您可以像这样简化代码:

 function httpMVCGetRequest(url,    callback, rrcallback) {
    $.get(url, {
        "UserName": $("#nameuser").val(),
        "Password": $("#passsignin").val()
    },
        callback);
}
httpMVCGetRequest('/users/login', callbackSignIn);

'/users/login?UserName=$("#nameuser").val()&Password=$("#passsignin").val()' 将不起作用,因为 $("#nameuser") 是 jquery 语法并编写它因为字符串文字不会评估,而是按原样呈现。


推荐阅读