javascript - 修复 jQuery 验证 + php 检查用户退出

标签 javascript php jquery ajax forms

我正在尝试添加一个表单,该表单使用 jQuery validate 进行验证,以及一个 PHP 脚本,用于检查用户 (usuario) 是否退出。每个用户都有不同的文件夹。为了检查用户是否退出,我检查文件夹是否存在,如果存在,则告诉存在错误,并且我不想停止提交表单。如果没有,我使用用户名创建子文件夹并创建该文件夹。

目前,我使用AJAX解决方案,但PHP未执行,并且不会在其上打印任何回显。 我一直在阅读有关 AJAX 和 jQuery 验证中的远程属性的更多信息,但无论哪种方式我都无法让我的功能发挥作用。

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

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

带 Remote

"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();
    });
}

关于javascript - 修复 jQuery 验证 + php 检查用户退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26476242/

相关文章:

javascript - 如何选择数组中的多个元素?

javascript - Angular 模拟忽略请求

php - 通过 window.opener 将值从弹出窗口传递到父窗口

php - 备份mysql数据

javascript - 我可以访问这个 _normalize 方法吗?

javascript - react : Material-UI - how to style the two item list so items will be next to each other?

javascript - Java访问浏览器本地存储

php - WooCommerce - get_order() 不起作用,它返回零

jquery - 使用 Webpack 包括 jQuery UI 缓动

javascript - datatables.net 标题出现在表格的侧面而不是顶部