【发布时间】:2018-12-14 00:04:55
【问题描述】:
我正在做一个简单的项目来学习 jQuery。我的问题是单击按钮后,我调用了一个 jquery。它可以工作并将数据传送到控制器,但成功功能在第一次单击时不起作用。它在第二次点击时正常工作。使用我的参数,在这两个调用中,控制器中的方法返回 true。但在第一次调用时,jquery 没有在成功函数中运行,但第二次调用会。
这是我的 jquery:
function signin() {
var parameters = {
email: $('#emailtxt').val(),
password: $('#passwordtxt').val()
};
console.log(parameters);
$.ajax({
url: '@Url.Action("Login","Session")',
type: 'GET',
data: parameters,
dataType: 'json',
success: function (correctData) {
if (JSON.parse(correctData) == false) {
alert("Incorrect e-mail or password.");
} else if (JSON.parse(correctData) == true) {
window.location.assign('@Url.Action("Index","Home")');
}
}
});
};
这是我在控制器中的代码:
public JsonResult Login(string email, string password)
{
using (var context= new ProjistDbContext())
{
var user = context.Users.FirstOrDefault(x => x.UserEmail == email && x.UserPassword == password);
if (user == null)
{
var result = JsonConvert.SerializeObject(false);
return Json(result, JsonRequestBehavior.AllowGet);
}
else
{
Session["UserId"] = user.Id;
var result = JsonConvert.SerializeObject(true);
return Json(result, JsonRequestBehavior.AllowGet);
}
}
}
我恳请您在这个问题上提供帮助。非常感谢。
【问题讨论】:
-
ajax 调用是第一次(检查网络选项卡)吗?是否得到了预期的结果(检查所选 ajax 调用上的响应选项卡)
-
另外你也不需要
JsonConvert.SerializeObject(true)电话。只需将布尔值传递给Json方法并从客户端删除JSON.parse。 -
感谢您的 JsonConvert 提示,是的,ajax 甚至在第一次就拨打了电话。
-
什么是第一时间返回?添加错误: function (xhr, ajaxOptions, throwedError) { alert(xhr.status);警报(抛出错误);然后你就可以看到为什么第一次失败了。返回的是什么。
-
你应该 console.log(correctData) 看看你的控制器返回什么
标签: javascript jquery asp.net asp.net-mvc