我如何验证我的表格(AJAX)?

时间:2013-07-22 17:51:55

标签: jquery ajax forms validation

我为验证我的表单(ajax)制作了这段代码,但它不起作用,(不执行Checkpage函数)。

$('#myform').submit(function(e){
    function Checkpage(catego){
        var desc=$('#descripcion').val();
        var title = $("#title").val();
        var parametros = {"descripcion":desc,"title":title};
        $.ajax({
            data:  parametros,
            url:   'Check.php',
            type:  'post',
            beforeSend: function () {
                $("#Checkpage").html("...");
            },
            success:  function (response) {
                if(response!=" "){
                    alert(response);                                                                                                           
                } else { 
                    alert('Process');
                    $("#myform").submit();
                }
            }
        });
    }
})

请帮帮我

1 个答案:

答案 0 :(得分:0)

当前所有提交函数都只是声明一个名为Checkpage()的函数,它不会调用它。只需完全删除Checkpage()函数声明,然后将其余代码直接运行在submit()函数中。

然后当然,你不需要递归地调用submit()。如果验证通过以允许提交执行其预期操作或返回true以阻止表单提交,则需要返回false

我命令这样做,但是在返回true / false响应之前,您需要实际等待来自ajax调用的结果,因为此调用是异步的。一种方法是使用async: false使呼叫成为阻塞同步呼叫。然后,您可以设置一个标志以指示POST有效并返回该标志的值。

所以你最终得到的结果可能是这样的:

$('#myform').submit(function(e){
    var validationSuccess = false;
    var desc=$('#descripcion').val();
    var title = $("#title").val();
    var parametros = {"descripcion":desc,"title":title};
    $.ajax({
        data:  parametros,
        url:   'Check.php',
        type:  'post',
        async: false,
        beforeSend: function () {
            $("#Checkpage").html("...");
        },
        success:  function (response) {
            if(response == " ") {
                // this is valid request
                valdidationSuccess = true;
            }
        }      
    });
    return validationSuccess;
});