我是php新手。
jquery中有一个名为editMode的变量设置为false。我在jquery中使用$.post()在php函数中传递变量。但是当我检查它的值时,这个值是好的,但是if语句并没有按照它应该的方式工作。这是我的代码:
jquery(只是一个片段):

var editMode = false;
$(document).ready(function(){
    //some function that handles UI input that triggers editMode=true

    $("#form").submit(function(event){
      event.preventDefault();

      var fName = $("#firstname").val();
      var lName = $("#lastname").val();
      //... and the rest of post values coming from UI input

      $.post('includes/sql/register.php', {
         fName: fName,
         lName: lName,
         //... and the rest of post values coming from UI input
         editMode: editMode // this is where I post the value for editMode
      },
      //jQuery function to handle the result
});

在my register.php中:
<?php
  if(isset($_POST['submit'])){
     $fName = mysqli_escape_string($conn,$_POST['fName']);
     $lName = mysqli_escape_string($conn,$_POST['lName']);
     //and other post values from UI input
     $editMode = $_POST['editMode'];

     if($editMode) {
        echo $editMode . ": edit"; //fires update query
     } else {
        echo  $editMode . "add"; //fires insert query
     }
  }
?>

测试代码时,它返回正确的值$editMode,但未正确执行if语句。我的意思是,如果$editMode是真的,它会回响:true: edit,这很好。但当它是假的时候,它会发出回声:false: edit。所以它仍然执行if子句,即使它的值现在是false。我也尝试了if($editMode === true) {//edit} else {//add},但结果恰恰相反。无论$editMode是真是假,它都执行else子句。请启发我。

最佳答案

在签入条件语句之前,可以验证布尔值:

$editMode = 'False';
$editMode = filter_var($editMode, FILTER_VALIDATE_BOOLEAN);
if ($editMode) {
    echo $editMode . ": edit"; //fires update query
} else {
    echo  $editMode . "add"; //fires insert query
}

09-06 16:44