Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我在提交时使用event.preventDefault()时,PHP头重定向不再工作_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 当我在提交时使用event.preventDefault()时,PHP头重定向不再工作

Javascript 当我在提交时使用event.preventDefault()时,PHP头重定向不再工作,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我的PHP代码一直运行良好,直到我决定在注册页面中使用jquery来处理和检查字段,它工作正常没有错误,所有内容都正确地提交到服务器,因此PHP和jquery代码都没有问题,但在我点击submit后,标题(“location:../*****.PHP”)不再将我发送到另一个页面,相反,它在旧页面的顶部加载新页面,而不刷新。 这是注册页面的jquery代码: <script> $(document).ready(function() { $("#myForm").submi

我的PHP代码一直运行良好,直到我决定在注册页面中使用jquery来处理和检查字段,它工作正常没有错误,所有内容都正确地提交到服务器,因此PHP和jquery代码都没有问题,但在我点击submit后,标题(“location:../*****.PHP”)不再将我发送到另一个页面,相反,它在旧页面的顶部加载新页面,而不刷新。 这是注册页面的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>

$(文档).ready(函数(){
$(“#myForm”).submit(函数(事件){
event.preventDefault();
var username=$(“#注册用户名”).val();
var pwd=$(“#注册pwd”).val();
$(“.form message”).load(“includes/user signup.inc.php”{
用户名:用户名,
pwd:pwd
});
});
});
这是我的include页面中的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>

$(“#注册用户名,#注册密码”).removeClass(“输入错误”);
var errorEmpty=“”;
var errorValid=“”;
如果(errorEmpty==true$$errorValid==true){
$(“#注册用户名,#注册密码”).addClass(“输入错误”);
if(errorFEmpty==false&&errorValid==false){
$(“#注册用户名,#注册密码,”).val(“”);
}

如何修复此问题?

您的代码的运行方式与它应该的完全相同

 $(document).ready(function() {
     $("#myForm").submit(function(event){
         // THIS LINE RIGHT HERE
         event.preventDefault();
      ******************
        $(".form-message").load("includes/user-signup.inc.php",{
      ******************
        });
     });
  });
Event prevent default停止重定向操作。此外,您还可以使用jquery将文件内容加载到类的DOM元素中:

.form-message
移除event.preventDefault()

当上述代码到达header(“Location:file.php”)的位置时; 它将把该文件提取到
$(“.formmessage”)
为了避免这种情况,可以使用ajax发布数据和javascript内置重定向

$.ajax({
  type: "POST",
  url: "includes/user-signup.inc.php",
  data: "username="+ username +"&pwd="+ pwd,
  success: function(data) {
    window.location.href = "../****.php";
  }
});

希望这个答案有帮助。

@preciousaniefok这不是我的代码。我只是从OP@PreciousAniefiok我不是OP,我发布了一个答案。再上去问他我明白了,但我能在不删除event.preventDefault()的情况下以某种方式修复它吗;?请输入完整代码,为了安全起见,您可以更改变量名。您的代码中带有星号,几乎不正确。@PreciousTom给您提供数据:“username=“+username+”&pwd=“+pwd”,这写得对吗?是的。@NizarWakourit不适合我,我没有这部分数据:“username=“+username+”&pwd=“+pwd,为什么“username=”和“&pwd=”?我有更多的变量,模式是什么,所以我可以添加它们,因为我在这里没有得到这个模式。和success:function(data){window.location.href=“../**.php“意味着如果数据成功转到我想要的页面?如果是,以什么方式成功?在数据成功添加到数据库之前,我不希望页面刷新。如果有其他更好的方式使用Java验证我的表单,我希望使用它。抱歉,我对javascript还是新手,我已经使用了“必需模式”使用HTML和PHP进行检查,这更安全,但PHP需要刷新,我想检查用户名和电子邮件是否已经在数据库中,而不刷新页面。谢谢这里有一个提示包括/user signup.inc.PHP?username=username&pwd=pwd与username=“+username+”&pwd相同=“+pwd,其中+表示连接。您可以选择从php脚本的结尾返回一段文本。并使用if(data==”该文本返回“{window.location.href=“../**.php”;}else{$(“.form report”).text(“Oops!登录失败”);}”
$.ajax({
  type: "POST",
  url: "includes/user-signup.inc.php",
  data: "username="+ username +"&pwd="+ pwd,
  success: function(data) {
    window.location.href = "../****.php";
  }
});