代码的意图:该代码的目的是接受通过数组中的作用域和位置传递给它的数据,通过AJAX将其传递给Login控制器(服务器端)。
问题代码似乎并没有成功地联系到服务器端操作。
下面是AJAX调用:
login: function (username, password) {
var cred = { "uname": username, "pass": password };
var response = $http({
method: "POST",
url: '@(Url.Action("CheckUser","Login"))',
data: JSON.stringify({ model: cred }),
contentType: 'application/json; charset=utf-8',
dataType: "JSON",
success: function (msg) {
if (msg) {
console.log("success: " + msg);
}
},
error: function (msg) {
if (msg) {
console.log("Error:" + msg);
}
},
failure: function (msg) {
if (msg) {
console.log("fail: " + msg);
}
}
});接下来是行动代码:
namespace test4.Controllers
{
public class LoginController : Controller
{
// GET: Login
public ActionResult Login()
{
return View();
}
public class UserCred
{
public string Uname { get; set; }
public string Pass { get; set; }
}
[HttpPost]
public ActionResult CheckUser(UserCred umodel)
{
Console.WriteLine("I am here");
if (!ModelState.IsValid)
{
return Content("0");
}
string uname = umodel.Uname;
string pword = umodel.Pass;
using (localtestEntities entity = new localtestEntities()) {
var user = entity.users.Where(u => u.uname == uname).FirstOrDefault();
if (user != null) {
if (pword == user.pw) {
Session["LoginID"] = user.id;
Session["Username"] = user.fname + ' ' + user.lname;
return Content(user.id.ToString());
} else {
return Content("0");
}
} else {
return Content("0");
}
}
/* Begin Assigning values */
} //End Check User
}
}预期的结果是将字符串的比较传递回客户端代码,以及数据库中的内容是否匹配。
发布于 2019-02-12 16:12:15
几件事:
$Http({...不是一个实际的ajax函数。我建议将$.post()用于[HttpPost],$.get()用于[HttpGet]。您可以从jQuery的文档中详细查看这一点:https://api.jquery.com/jquery.post/@(Url.Action("CheckUser","Login"))传递到您的url中,因此它看起来类似于localhost:3000/@(Url.Action("CheckUser","Login")),这显然不是一条合法的路径。您必须以不同的方式获得ajax函数的URL。一些备选方案:1)在.cshtml文件的头文件中,执行如下操作:
<script>
$(() => {
const url = `@Url.Action("CheckUser","Login")`;
//Pass that into your JS code via a constructor parameter if your JS
//is a class or by function parameter if your JS code is a function.
const myJSClassNameHere = new myJSClassHere(url);
});
</script>2)只需将url硬编码到ajax调用中即可。如果您不预期url会更改和/或如果您的标准允许的话,这是一个可行的选择。
https://stackoverflow.com/questions/54654227
复制相似问题