我的PHP代码工作正常,直到我决定使用jquery为我的注册页面来处理和检查字段,它的工作没有错误,所有内容都正确地提交给服务器所以PHP代码没有问题也没有问题jquery,但是在我点击提交后,标题(“location:../。VSp”)不再将我发送到另一个页面,而是在没有刷新的情况下将新页面加载到旧页面之上。 这是我的注册页面的jquery代码:
<script>
$(document).ready(function() {
$("#myForm").submit(function(event){
event.preventDefault();
var username = $("#signup-username").val();
var pwd = $("#signup-pwd").val();
$(".form-message").load("includes/user-signup.inc.php",{
username: username,
pwd: pwd
});
});
});
</script>
这是我的包含页面中的PHP代码:
<?php
if (isset($_POST['submit'])){
include_once 'dbh.inc.php';
$username= mysqli_real_escape_string($conn, $_POST['username']);
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);
$errorEmpty = $errorValid = false;
if(empty($username)|| empty($pwd)){
echo "Fill in all Fields!";
$errorEmpty = true;
}
else{
$stmt = $conn->prepare("SELECT * FROM users WHERE username=?");
$stmt->bind_param("s", $uid);
$uid = $username;
$stmt->execute();
$result = $stmt->get_result();
$usernamecheck = mysqli_num_rows($result); // check if the results
$rowNum = $result->num_rows;
if($rowNum > 0){
echo "Username is taken!";
$errorValid = true;
}
else{
$hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);
$stmt = $conn->prepare("INSERT INTO users (username, pwd) VALUES (?, ?)");
$stmt->bind_param("ss",$uid, $password);
$uid = $username;
$password = $hashedPwd;
$stmt->execute();
$result = $stmt->get_result();
header("location: ../user-login.php");
}
}
}else{
header("location: ../user-signup.php");
exit();
}
?>
<script>
$("#signup-username, #signup-pwd").removeClass("input-error");
var errorEmpty = "<?php echo $errorEmpty; ?>";
var errorValid = "<?php echo $errorValid; ?>";
if (errorEmpty == true $$ errorValid == true){
$("#signup-username, #signup-pwd").addClass("input-error");
if (errorFEmpty == false && errorValid == false){
$("#signup-username, #signup-pwd,").val("");
}
</script>
我该如何解决这个问题?
答案 0 :(得分:0)
您的代码完全按照预期运行。
$(document).ready(function() {
$("#myForm").submit(function(event){
// THIS LINE RIGHT HERE
event.preventDefault();
******************
$(".form-message").load("includes/user-signup.inc.php",{
******************
});
});
});
事件阻止默认值会停止重定向操作。此外,然后使用jquery将文件的内容加载到DOM元素中,类为:
.form-message
删除event.preventDefault();
答案 1 :(得分:0)
$(".form-message").load("includes/user-signup.inc.php",{
username: username,
pwd: pwd
});
当上面的代码到达标题的位置时(&#34;位置:file.php&#34;);
它会将该文件提取到$(".form-message")
要避免这种情况,您可以使用ajax发布数据和javascript内置重定向
$.ajax({
type: "POST",
url: "includes/user-signup.inc.php",
data: "username="+ username +"&pwd="+ pwd,
success: function(data) {
window.location.href = "../****.php";
}
});
希望这个答案很有帮助。