asp.net - 从登录页面的文本字段获取数据时,如何在 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()'
解决方案
您可以像这样简化代码:
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 语法并编写它因为字符串文字不会评估,而是按原样呈现。
推荐阅读
- google-apps-script - Google 表格中的变量 URL 参考
- javascript - Electron - 如何处理多台显示器上的屏幕外窗口?
- mysql - mysql显示状态完成的产品和总数量
- typescript - 将整数/字符串转换为枚举成员
- spring-boot - MapStruct 映射器返回空映射对象
- android - 系统/应用程序中的 APK 何时安装?
- react-admin - react-admin v 3.9.6 的多个数据提供者
- javascript - jQuery 替换文本但不去除 HTML
- scala - 关于 option.contains() 的 Scala 问题
- angular - 为什么我不能以角度保存我的获取请求?