Javascript 在ajax调用不同的php文件进行验证和提交表单后,如果($服务器[“请求”方法]==“发布”)条件未得到满足

Javascript 在ajax调用不同的php文件进行验证和提交表单后,如果($服务器[“请求”方法]==“发布”)条件未得到满足,javascript,php,ajax,mysqli,Javascript,Php,Ajax,Mysqli,我有下面的注册页面,我在那里发回同一页面 <?php session_start(); if ($_SERVER["REQUEST_METHOD"] == "POST") { $_SESSION["registered"] = "success"; $count = insert_record($_POST['fname'],$_POST['lname'],$_POST['email'],$_POST['regusername'],$_POS

我有下面的注册页面,我在那里发回同一页面

<?php
    session_start();
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $_SESSION["registered"] = "success";
        $count = insert_record($_POST['fname'],$_POST['lname'],$_POST['email'],$_POST['regusername'],$_POST['regpassword']);
        header("Location: login.php");
    }
    $page_title = "Registration";
    if(isset($_SESSION["username"]))
        include('includes/header_authorized.html');
    else
        include('includes/header.html');

?>

<div class="container">
    <div class="regform">
        <form  name="registration" id="registration" method="post" action="registration.php">
            <p><span class="req">* required field.</span></p>                      
            <ul>
                <li><label for="fname">First Name:</label>
                    <input type="text" class="textboxborder" id="fname" name="fname" size="20" maxlength="25" autofocus="autofocus" value="<?php if(isset($_POST['fname'])) echo $_POST['fname'];?>"/>
                    <span class="error" id="errfname">*<?php if(isset($errfname)) echo $errfname;?></span>
                </li>
                <li><label for="lname">Last Name:</label>
                    <input type="text" class="textboxborder" id="lname" name="lname" size="20" maxlength="25" value="<?php if(isset($_POST['lname'])) echo $_POST['lname'];?>"/>
                    <span class="error" id ="errlname">*<?php if(isset($errlname)) echo $errlname;?></span>
                </li> 
                <li><label for="email">Email:</label>
                    <input type="text" class="textboxborder" name="email" id="email" size="40" maxlength="50" placeholder="abc@xyz.com" value="<?php if(isset($_POST['email'])) echo $_POST['email'];?>"/> 
                    <span class="error" id="erremail">*<?php if(isset($erremail)) echo $erremail;?></span>  
                </li>
                <li><label for="regusername">Username:</label>
                    <input type="text" name="regusername" id="regusername" size="20" maxlength="30" value="<?php if(isset($_POST['regusername'])) echo $_POST['regusername'];?>"/> 
                    <span class="error" id="errregusername">*<?php if(isset($errregusername)) echo $errregusername;?></span> 
                </li>
                <li><label for="regpassword">Password:</label>
                    <input type="text" name="regpassword" id="regpassword" size="20" maxlength="15" value="<?php if(isset($_POST['regpassword'])) echo $_POST['regpassword'];?>"/> 
                    <span class="error" id="errregpassword">*<?php if(isset($errregpassword)) echo $errregpassword;?></span> 
                </li>
                <li><label for="regconpassword">Confirm Password:</label>
                    <input type="text" name="regconpassword" id="regconpassword" size="20" maxlength="15"/> 
                    <span class="error" id="errregconpassword">*<?php if(isset($errregconpassword)) echo $errregconpassword;?></span> 
                </li>
            </ul>
            <div id="message_line">&nbsp;<?php if(isset($error)) echo $error;?></div>
            <div class="buttons">
                <input type="reset" value="Reset" id="reset"/>
                <input type="submit" value="Submit" id="submit"/>
            </div> 
        </form>  
        <img src="images/loading.gif" id="busy_wait" alt="busy wait icon" />  
    </div> 
</div>
</body>
</html>
在insert_记录中,这是我所拥有的-

function insert_record($fname,$lname,$email,$username,$password) {
    $conn = get_connection();
    $to_insert = "INSERT INTO user VALUES ('$fname', '$lname', '$email', '$username', '$password', 20)";
    if(!($result = mysqli_query($conn,$to_insert)))
        return 0;                       
    else
        return mysqli_affected_rows($conn);
} 
由于某些原因,当我单击“提交”时,在重复用户验证后不会发生任何事情

如果我删除ajax调用来检查副本并直接提交它,它就可以正常工作了。
请说明我可能做错了什么。

我认为在添加一些库之前,它们在javascript中不是HttpRequest对象。在代码中看到

var request = new HttpRequest(url, submitHandler);
request.send(params);
此外,您正在以GET not POST格式发送参数

相反,您需要使用XmlHttpRequest对象来发送ajax请求,如下所示

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        submitHandler(xhr.responseText);
    }
}
// xhr.open('GET',  "check_duplicate.php?" + params, true);
// xhr.send(null);
xhr.open('POST',  "check_duplicate.php", true);
xhr.send(params);
您还可以使用jQueryAjax简化事情

$.post('check_duplicate.php', params, function(responseText) {
    submitHandler(responseText);
});

现在它会自动重定向到登录页面而不执行任何操作?变量是否为“print\r”ing@user2769614打印(邮政美元);在任何类型的重定向之前,您是否向页面提交了任何数据?啊,您正在询问如何构建一个侦听器来提交到数据库,以便您可以侦听ajax调用的输出。与您在原始代码中使用的相同,请使用
e.preventDefault()如果我在同一个地方完全使用它的停止表单提交,如果在ajax post code之后添加默认代码,它应该会起作用。你的意思是在})之后。。。我试过了,但不起作用,在这种情况下,即使它验证了Fine,它也会停止表单。我认为有一件事是您使用了click事件。可能是preventdefault仅用于停止单击事件绑定,而不用于提交事件绑定。所以你的表格还是提交了。我建议使用input type=button而不是input type=submit。它将消除通过单击提交表单的机会。
$.post('check_duplicate.php', params, function(responseText) {
    submitHandler(responseText);
});