当试图检查数据库中是否已经存在用户名时,Ajax调用不起作用


Ajax call not working, when trying to check if username already exists in the database

我已经为注册表单编写了php代码。它在没有Ajax调用的情况下工作。但当我使用Ajax调用来检查重复的用户名时,它不会被调用。

HTML:

<form action="#" method="POST" class="LoginForm">
    First Name: <input type="text" placeholder="First Name" required name="s_f_n" class="user_input" />
    Last Name: <input type="text" placeholder="Last Name" required name="s_l_n" class="user_input" />
    Email:<input type="email" placeholder="Email" required name="s_u_id" class="user_input" />
    Username: <input type="text" placeholder="Username" required name="s_u_n" class="user_input" />
    Password:<input type="password" placeholder="Password" required name="s_u_p" class="user_input" />
    <input type="submit" value="Sign Up" formvalidate name="signup" class="inSub" id="su"/>
</form>

Ajax:

$(document).ready(function(){
            $('#su').click(function(){
                $.ajax({
                     type: 'post',
                     url: 'ajax.php',
                     data: {'ajax': true},
                    success: function(){
                        window.alert("success");
                    }
                });
            });
});

ajax.php:

if(isset($_POST['ajax']) && ($_POST['ajax']) == true){
            $conn = mysql_connect('localhost', 'root', '');
            if(!$conn){
                die(mysql_error());
            } else {
                mysql_select_db('users');
                $fname = mysql_real_escape_string($_POST['s_f_n']);
                $lname = mysql_escape_string($_POST['s_l_n']);
                $em = mysql_real_escape_string($_POST['s_u_id']);
                $uname = mysql_real_escape_string($_POST['s_u_n']);
                $p = md5($_POST['s_u_p']);
                $sql_query = "SELECT * FROM `udata` WHERE username_user = '$uname'";
                $result = mysql_query($sql_query);
                if(mysql_num_rows($result) > 0){
                    //trying to see if this part works
                    header("Location: https://www.google.com");
                    mysql_close();
                } else {
                    $sql_query = "INSERT INTO `users`.`udata` (firstname, lastname, email_id, username_user, pd) VALUES ('$fname', '$lname', '$em', '$uname', '$p')";
                    $sub_query_ret_val = mysql_query($sql_query, $conn);
                    if(!$sub_query_ret_val){
                        die(mysql_error());
                    }
                    mysql_close();
                }
            }
    }

Ajax.php既不检查重复,也不将数据输入mysql数据库

答案:@jQuery.PHP.Magento.com

data:$(".LoginForm").serialize()

工作非常完美。

只需使用输入按钮

<input type="button" value="Sign Up" formvalidate name="signup" class="inSub" id="su"/>

现在表单不会重新加载以前在代码中重新加载的页面。

编辑:

$("form").serialize();用于自动形成Key:Value输入对。因此,如果你的表单有100个字段,而不是做可怕的data:{'field1':$("#field1Input").val(),..........'field1':$("#field100Input").val()}serialize()方法串行化key:value,key2:value2对中的表单数据。

如果没有preventDefault((,每次单击提交按钮时都可以重新加载页面。尝试包含如下所示的preventDefault((。

$(document).ready(function(){
    $('#su').click(function(e){
        e.preventDefault();
        $.ajax({
             type: 'post',
             url: 'ajax.php',
             data: {'ajax': true},
            success: function(){
                window.alert("success");
            }
        });
    });
});