【发布时间】:2019-07-06 08:16:06
【问题描述】:
代码的意图: 这段代码的目的是接受通过作用域传递给它的数据,并放在一个数组中,以通过 AJAX 传递给登录控制器(服务器端)。
问题 AJAX 代码似乎没有成功联系服务器端操作。
- 我已尝试将操作从登录控制器移动到主控制器:没有成功。
- 我已尝试遵循之前遇到此问题的人的指南:没有成功。
- 我已尝试将 URL 硬编码到操作:没有成功。
下面是 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
}
}
预期的结果是向客户端代码传回传递的字符串比较是否与数据库中的内容匹配。
【问题讨论】:
-
那个JS在哪里执行?你检查过浏览器的开发控制台吗?它说什么错误?正在生成什么 URL?这些都是您必须检查并包含在帖子中的基本内容
-
@CamiloTerevinto 这个 JS 代码是从我的 /Scripts/drivers 文件夹中执行的,而控制器文件位于 /Controllers/LoginControllers 中。在 VS 2017 中使用调试器时,代码在“var response....”处死掉了
-
所以@keyle56 的回答实际上是正确的。这是一个很长的镜头,因为它可能是一个完全不同的问题
标签: c# asp.net-mvc-5 asp.net-ajax