我正在运行验证,以在提交表单之前检查数据库中是否已存在名称。在调试时,我单击提交,错误函数触发警报,然后在ExistingName(字符串名称)方法中命中调试断点。
ExistingName()返回正确的值,但是ajax始终触发错误函数,并且即使isValid应设置为false,表单也始终提交。
有人能发现发生的事吗?
JS:
$('form').submit(function () {
var isValid = true;
$.ajax({
type: "POST",
url: "/Event/ExistingName",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({
Name: Name
}),
success: function (result) {
alert(result.IsExisting);
isValid = false;
},
error: function (result) {
alert('error');
isValid = false;
}
});
return isValid;
});
控制器:
[HttpPost]
public ActionResult ExistingEventName(string name)
{
bool exists = DoesNameExist(name);
return Json(new
{
IsExisting = exists
});
}
答案 0 :(得分:2)
$.ajax
正在异步执行,您需要考虑到这一点并重新制定您的方法。 return isValid;
并未等待您的ajax调用完成(无论是成功还是失败)。
或者,您可以选择将$.ajax
设置为同步,但我不建议这样做。