ajax错误函数总是触发

时间:2014-08-15 19:19:28

标签: jquery ajax asp.net-mvc

我正在运行验证,以在提交表单之前检查数据库中是否已存在名称。在调试时,我单击提交,错误函数触发警报,然后在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
    });
}

1 个答案:

答案 0 :(得分:2)

$.ajax正在异步执行,您需要考虑到这一点并重新制定您的方法。 return isValid;并未等待您的ajax调用完成(无论是成功还是失败)。

或者,您可以选择将$.ajax设置为同步,但我不建议这样做。