在尝试检查数据库中是否已存在用户名时,Ajax调用无法正常工作

时间:2015-07-03 16:48:45

标签: php mysql ajax

我已经为注册表单编写了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()

工作得很好。

2 个答案:

答案 0 :(得分:1)

如果没有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");
            }
        });
    });
});

答案 1 :(得分:1)

只需使用输入按钮

<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对中的表单数据序列化。