提交表单时,如何在浏览器显示 php 中隐藏 echo 的输出?我使用 jquery validate 进行验证

How to hide from browser's display the output of echo in php when the form is submitted? I used jquery validate for validation

我想在注册新用户时隐藏页面顶部 'echo' 的输出。另外,我在我的脚本中使用 jQuery-validate remote。我也试过 ob_start()ob_end_clean() 来隐藏它,但它不会将所有数据插入数据库。请帮助我,非常感谢你。

if(isset($_POST['uname'])){
    $uname = mysqli_real_escape_string($conn, $_POST['uname']);
    $query = "SELECT * from tbl_users where Username = '$uname'";
    $result = mysqli_query($conn,$query) or die(mysqli_error($conn));
    if(mysqli_num_rows($result) > 0){
        echo "false";
    }
    else {
        echo "true";
    }   
}
//on submit
if(isset($_POST['register'])){
    $fname = mysqli_real_escape_string($conn, $_POST['fname']);
    $lname = mysqli_real_escape_string($conn, $_POST['lname']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $uname = mysqli_real_escape_string($conn, $_POST['uname']);
    $pwd = mysqli_real_escape_string($conn, $_POST['pwd']);
    $pwd = md5($pwd);

    $sql = "SELECT * FROM tbl_users WHERE Username='$uname'";
    $checkRows = mysqli_query($conn, $sql) or die(mysqli_error($conn));

    if(mysqli_num_rows($checkRows) > 0){
        echo "You are already registered";
    }
    else {
        $query = "INSERT into tbl_users(Firstname,Lastname,Email,Username,Password) VALUES ('$fname','$lname','$email','$uname','$pwd')";
        $result = mysqli_query($conn, $query) or die(mysqli_error($conn));
        echo "REGISTERED SUCCESSFULLY";
        mysqli_close($conn);
    }
}

这是我的脚本。请帮助我。

$('#registration-form').validate({  
rules: {
  uname: {
    minlength: 6,
    required: true,
    alphanumeric:true,
    remote: {
      url: 'includes/registration.php',
      type: "post"
    }
  }
});

根据您的解释,我了解到您有一个由 php 文件生成的页面。该页面也从 JavaScript/AJAX 调用。当通过 AJAX 调用时,它需要 true/false 输出,以便 JavaScript 中的验证代码可以工作。但是,当它只是生成一个页面时,输出不应该在那里。您的意思是 true/false 输出是有条件的。因此,PHP 代码必须有办法知道它是否被 JavaScript 调用。

如果我误解了你的问题,请更新你的问题。

一种方法是在从 AJAX 调用时传递另一个参数。

$isAjax = $_GET['isAjax'] ?? false;
if(isset($_POST['uname'])){
    $uname = mysqli_real_escape_string($conn, $_POST['uname']);
    $query = "SELECT * from tbl_users where Username = '$uname'";
    $result = mysqli_query($conn,$query) or die(mysqli_error($conn));
    if(mysqli_num_rows($result) > 0){
        if ( $isAjax ) echo "false";
    }
    else {
        if ( $isAjax ) echo "true";
    }   
}

然后,当您从 JavaScript 调用它时,告诉它您想要输出。

$('#registration-form').validate({  
rules: {
  uname: {
    minlength: 6,
    required: true,
    alphanumeric:true,
    remote: {
      url: 'includes/registration.php?isAjax=1',
      type: "post"
    }
  }
});

我所做的是在我的脚本中添加一个参数,然后将其传递到我的 php 文件中。

$('#registration-form').validate({  
  rules: {
    uname: {
    minlength: 6,
    required: true,
    alphanumeric:true,
    remote: {
      url: 'includes/registration.php',
      type: "post",
      data: {
        'username_check': 1,
        uname: function (){
          return $('#registerUsername').val();
        }
      }
    }
  }
});

这是我更新的 php 文件。我调用了我在脚本中创建的参数。

if(isset($_POST['username_check'])){
  $uname = mysqli_real_escape_string($conn, $_POST['uname']);
  $query = "SELECT * from tbl_users where Username = '$uname'";
  $result = mysqli_query($conn,$query) or die(mysqli_error($conn));
  if(mysqli_num_rows($result) > 0){
    echo "false";
  }
  else {
    echo "true";
  }   
}