为什么我的jQuery事件没有阻止帖子?

时间:2014-02-26 17:43:44

标签: jquery asp.net-mvc

我有一个MVC应用程序,它使用自己的用户数据库和身份验证系统,而不是标准的帐户控制器和aspnet auth系统(没有计划改变它)。作为其中的一部分,我有一个jQuery事件,在发送到服务器的表单发布之前检查是否存在用户名以创建新用户。当我在.submit函数的开头放置一个event.preventDefault时,一切似乎都正常工作。但是,如果用户名已存在,我只想阻止帖子。在下面的例子中,我从未收到过警报,并且发布了帖子任何人都可以告诉我我做错了什么?谢谢!

    $(document).ready(function () {
        $('#ProcessApplication').submit(function (event)
        {                                             
            var un = encodeURIComponent($("input[name='form_email1']").val());
            var myurl = '/Home/IsUser/' + un;
            alert(myurl);
            $.ajax({
                url: myurl,
                success: function (response) {
                    if (response == '1') {                           
                        alert("This e-mail address is already registered. Please login, then resubmit your application.");
                        event.preventDefault(); // <-- I've tried both event.preventDefault(); and return false; here
                    }
                }
            });                
        });
    });   

2 个答案:

答案 0 :(得分:5)

您之前需要preventDefault()功能......

$(document).ready(function () {
    $('#ProcessApplication').submit(function (event) {                                             
        event.preventDefault(); // <-- Put it here
        var un = encodeURIComponent($("input[name='form_email1']").val());
        var myurl = '/Home/IsUser/' + un;
        alert(myurl);
        $.ajax({
            url: myurl,
            success: function (response) {
                if (response == '1') {                           
                    alert("This e-mail address is already registered. Please login, then resubmit your application.");
                }
            }
        });                
    });
});  

你拥有它的地方只是在ajax调用完成后被调用,这将在提交后发生。

答案 1 :(得分:1)

您需要将async: false添加到您的ajax设置。