jquery e.preventdefault在$.post内不工作

jquery e.preventdefault在$.post内不工作,jquery,ajax,validation,Jquery,Ajax,Validation,嗨,我正在检查数据库中是否已经存在表单中的标题 我的代码执行$.post并返回数据,但它不会以e.preventDefault()停止;或返回时为假。e、 预防默认值();标题为空时工作 $(document).ready(function() { $('input[id$=btnSubmit]').click(function(e) { var title = $("#title").val(); if (

嗨,我正在检查数据库中是否已经存在表单中的标题

我的代码执行$.post并返回数据,但它不会以e.preventDefault()停止;或返回时为假。e、 预防默认值();标题为空时工作

    $(document).ready(function() {
        $('input[id$=btnSubmit]').click(function(e) {
                var title = $("#title").val();
                if (!title) {
                    alert('Please Add a title');
                    return false ;
                    e.preventDefault();
                } else {
                     $.post("http://xendesktop.nl/uploader/checktitle.php",{ title:$(this).val() } ,function(data) {
                        if(data=='exists') {
                            alert('This title already exists');
                            e.preventDefault();
                        }
                     });
                }
                var description = $("#description").val();
                if (!description) {
                    alert('Please Add a description');
                    return false ;
                    e.preventDefault();
                }

返回false
相当于防止冒泡和防止默认值


两者都不应进入AJAX回调-该函数在单击回调之外被调用。

返回false
相当于防止冒泡和防止默认值


两者都不应进入AJAX回调-该函数在click回调之外被调用。

post请求是异步发生的,因此在服务器发回响应之前(不会及时发生)按钮的默认操作没有被阻止,或者更确切地说,执行流经过该点,处理程序的其余部分被执行,导致表单提交。

post请求是异步发生的,因此直到服务器返回其响应(这不会及时发生)按钮的默认操作才被阻止,执行流经过该点,处理程序的其余部分被执行,导致表单提交。

那么如何防止这种情况发生呢?我会在处理程序开始时防止默认值,并手动触发提交,例如,
$(this).closest(“form”).submit()
,只有在我们准备就绪时才触发提交。这需要一点重构,但最终会得到一个更短更简洁的解决方案。那么如何防止这种情况呢?我会在处理程序的开始部分使用preventDefault,并手动触发提交,例如,
$(this).closest(“form”).submit()
,只有在我们准备就绪时才使用。这需要进行一些重构,但最终会得到一个更简短的解决方案。