0

我制作了这段代码来验证我的表单(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();
                }
            }
        });
    }
})

请帮我

4

1 回答 1

0

您当前所做的所有提交函数只是声明一个名为Checkpage()它的函数而不调用它。只需完全删除Checkpage()函数声明并让其余代码直接在submit()函数中运行。

然后,当然,您不需要submit()递归调用。您需要做的是返回true验证通过以允许提交执行其预期操作或返回false以阻止表单提交的情况。

但是,我命令这样做,您实际上需要等待 ajax 调用的结果,然后再返回 true/false 响应,因为此调用是异步的。一种方法是使用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;
});
于 2013-07-22T18:03:06.567 回答