固定jQuery验证+php检查用户出口

FIXED jQuery Validate + php check user exits

本文关键字:用户 出口 检查 +php jQuery 验证 固定      更新时间:2023-09-26

我正试图添加到一个表单中,该表单通过jQuery validate和一个PHP脚本进行验证,在该脚本中我检查用户(usuario)是否退出。每个用户都有不同的文件夹。为了检查用户是否退出,我检查文件夹是否存在,然后如果存在,则告知存在错误,并且我不想阻止表单提交。如果没有,我用用户名创建子文件夹并创建文件夹。

目前,我使用AJAX解决方案,但PHP没有执行,也不会在上面打印任何回声。我已经阅读了更多关于AJAX和jQuery-validate中远程属性的内容,但这两种方式都无法使我的功能发挥作用。

使用Ajax(或者我所理解的Ajax)

submitHandler: function(form) {
              var username = $(this).val();
              $.post('check_user.php', {'usuario':username}, function(data) { 
                  $("#user-result").html(data); 
                  form.submit();
              });
 }

使用远程

"usuario":{
         required: true,
         rangelength: [3, 10],
         remote: {
                url: "check-user.php",
                type: "get",
                data:{
                    usuarios: function(){
                       return $('#usuario').val();
                    }
                }
         }
}

我的PHP

<?php
    $user = $_REQUEST['usuario'];
    $dir = "usuarios/$user";
    if (!file_exists($dir)) {
        echo 'true';
    } else {
        if(!mkdir($dir, 0777, true)) {
            echo 'Fallo al crear las carpetas...'
        }   
        $doc = new_xmldoc('1.0');
        $root = $doc->add_root('historial');
        $fp = @fopen('historial.xml','w');
        if(!$fp) {
            echo 'Fallo al crear historial.xml'
        }
        fwrite($fp,$doc->dumpmem());
        fclose($fp);
        echo 'true';
    }
 ?>

我的表单(HTML)

<form id="register" action="index.php" method="post" onsubmit="return validateForm();">
    <div class="elRegister"><label>Usuario:</label>
    <input name="usuario" id="usuario" type="text" size="16"></div>

更新:正确关闭括号我仍然有问题。规则很好,但在正确填写表格后,当我按下提交按钮时,什么都没有。如果我的表单中有错误,它将正确地显示错误。我的脚本将具有以下结构:

<script type="text/javascript">
    (function($, W, D) {
        var validaForm = {};
        validaForm.UTIL =
                {
                    setupFormValidation: function()
                    {
                        //Reglas de validacion
                        $("#register").validate({
                            debug:true,
                            rules: {
                            },
                            messages: {
                            },
                            submitHandler: function(form) {
                                var username = $(this).val();
                                $.post('check_user.php', {'usuario':username}, function(data) {
                                    $("#user-result").html(data);
                                    form.submit();
                                });
                            }
                        });
                    }            
                }
        $(D).ready(function($) {
            validaForm.UTIL.setupFormValidation();
        });
    })(jQuery, window, document);
</script>

感谢您所做的一切,如果您需要我的代码中的更多内容,只需询问即可。

固定的我终于解决了这个问题。我在这里找到了解决方案:YouTube解决方案是同时使用ajax和远程规则。使用远程规则,我检查用户是否存在,使用ajax,我覆盖表单提交并编写另一个表单,看起来像:

$("#register").submit(function() {
        var valido = $("#register").valid(); 
        if(valido){
            var $inputs = $('#register :input');
            // not sure if you wanted this, but I thought I'd add it.
            // get an associative array of just the values.
            var values = {};
            $inputs.each(function() {
                values[this.name] = $(this).val();
            });
            alert("Formulario valido");
            $.get("crear_usuario.php",values);
        }  
        else{
            alert("Formulario no valido");
        }
    });

谢谢你的回答!

您没有正确关闭submitHandler。这是固定代码。

submitHandler: function(form) {
    var username = $(this).val();
    $.post('check_user.php', {'usuario':username}, function(data) { 
        $("#user-result").html(data); 
        form.submit();
    });
}