javascript - 即使发现错误,Ajax 仍在执行

标签 javascript php jquery html ajax

程序员们好!我正在尝试提交一个表单,然后使用 jquery 和 2 个 ajax 事件来验证它。我使用 ajax(timeconflict.php) 来验证是否与用户的时间输入存在冲突。但即使它返回错误,另一个 ajax 事件仍在执行(reserveroom.php)。抱歉我的语法,这是我的代码

$('#submitreserve').click(function(){
var error=false;
var inputtimeerror = false;
var conflict = false;
var message="";
var to="";
var from="";
var fromH="";
var fromM="";
var toH="";
var toM="";
var now = new Date();

if($("#datetimepicker").val()=="" || $("#trtitle").val()=="" || $("#from").val()=="" || $("#to").val()=="")
{
  error = true;
  message ="Please Fill all required Fields!";
}
if($("#from").val()!="" && $("#to").val()!="")
  {
    from = $("#from").val(); // start time
    to = $("#to").val(); // end time
    fromH = from.substr(0,2); // get hour from start time
    fromM = from.substr(3,2); // get mins from start time

    toH = to.substr(0,2); // get hour from end time
    toM = to.substr(3,2); // get mins from end time

    var timeerror = false;
    var inputDate = $("#datetimepicker").val(); // date
    inputFrom = new Date(inputDate+" "+from); // time and start date
    inputTo = new Date(inputDate+" "+to); // time and end date

    if(fromH > toH)
    {
      timeerror=true;
    }

    if(fromH == toH && fromM >= toM)
    {
      timeerror=true;
    }

    if(to == from)
    {
      timeerror=true;
    }

    if(inputFrom <= now || inputTo <= now)
    {
      inputtimeerror = true;  
    }

    if(error == false && inputtimeerror == false)
    {
      $.ajax({
      type:'post',
      url: 'timeconflict.php',
      data: { startTime : from,
      endTime : to,
      inputDate : inputDate,
      room : target },
      dataType: 'json',
      success : function(e)
      {
        if (e.length == 0)
        {
          console.log("No value returned");
        }
        else
        {
          console.log(e[0]);
          console.log("Conflict time schedule!");
          conflict = true;
          error=true;
          alert("Conflict"); 
          return false;      
        }
      }
      });

    }

    if(inputtimeerror)
    {
      error=true;
      message = "Reservation time must be higher than time today!";
    }

    if(conflict)
    {
      error = true;
      message = "Conflict Time Schedule!";
    }

    if(timeerror)
    {
      message = "Invalid End Time!";
      error=true;
    }  

  }

if(error==true)
  {
    $("#error").text(message);
    return false;
  }

if(error==false)
  {
    $.ajax({
    type:'post',
    url: 'reserveroom.php',
    data: { trtitle : $("#trtitle").val(),
    from : $("#from").val(),
    to : $("#to").val(),
    datetimepicker : $("#datetimepicker").val(),
    ninjaday : $("#ninjaday").val(),
    ninjaroom : $("#ninjaroom").val() },
    dataType: 'json'
    });
  }
});

//timeconflict.php
<?php
include ('../conn.php');
// header("Content-Type: application/json");
$start_time = $_POST['startTime'];
$end_time = $_POST['endTime'];
$res_date = $_POST['inputDate'];
$res_room = $_POST['room'];

$sql = "SELECT * from tdc_reservation where ( ((`reserve_start` BETWEEN '".$start_time."' and '".$end_time."')";
$sql.= " or (`reserve_end` BETWEEN '".$start_time."'  and '".$end_time."' )) or";
$sql.= " (('".$start_time."' BETWEEN `reserve_start` and `reserve_end`) or ";
$sql.= " ('".$end_time."' BETWEEN `reserve_start` and `reserve_end`)) or ";
$sql.= " ((`reserve_start` = '".$start_time."' ) or (`reserve_end`='".$start_time."' ))";
$sql.= " or ((`reserve_start` = '".$end_time."') or (`reserve_end` = '".$end_time."')) )";
$sql.= " and reserve_date='".$res_date."' and reserve_room = '".$res_room."' LIMIT 1 ";
$result = mysql_query($sql,$con);
$stack = array();
while($row = mysql_fetch_array($result))
      {
        $stack[] = $row;
      } 
 $json = json_encode($stack);


mysql_close();
echo $json;
?>

我真的希望有人能帮助我,这个错误已经消耗了我两天的时间:(

最佳答案

修改了您的代码,希望这会起作用

$('#submitreserve').click(function(){

var message="";
var to="";
var from="";
var fromH="";
var fromM="";
var toH="";
var toM="";
var now = new Date();

if($("#datetimepicker").val()=="" || $("#trtitle").val()=="" || $("#from").val()=="" || $("#to").val()=="")
{
  message ="Please Fill all required Fields!";
}else{


from = $("#from").val(); // start time
to = $("#to").val(); // end time
fromH = from.substr(0,2); // get hour from start time
fromM = from.substr(3,2); // get mins from start time

toH = to.substr(0,2); // get hour from end time
toM = to.substr(3,2); // get mins from end time


var inputDate = $("#datetimepicker").val(); // date
inputFrom = new Date(inputDate+" "+from); // time and start date
inputTo = new Date(inputDate+" "+to); // time and end date



if(fromH > toH || (fromH == toH && fromM >= toM) || to == from)
    {
      message = "Invalid End Time!";
    }
   else if(inputFrom <= now || inputTo <= now)
    {
      message = "Reservation time must be higher than time today!"; 
    }else{
      $.ajax({
      type:'post',
      url: 'timeconflict.php',
      data: { startTime : from,
      endTime : to,
      inputDate : inputDate,
      room : target },
      dataType: 'json',
      success : function(e)
      {
        if (e.length == 0)
        {
          console.log("No value returned");
          reserveRoom();
        }
        else
        {
          console.log(e[0]);
          console.log("Conflict time schedule!");
          alert("Conflict"); 
          return false;      
        }
      }
      });

    }

    }

    alert(message);

    });


function reserveRoom(){

$.ajax({
    type:'post',
    url: 'reserveroom.php',
    data: { trtitle : $("#trtitle").val(),
    from : $("#from").val(),
    to : $("#to").val(),
    datetimepicker : $("#datetimepicker").val(),
    ninjaday : $("#ninjaday").val(),
    ninjaroom : $("#ninjaroom").val() },
    dataType: 'json'
    });

}

关于javascript - 即使发现错误,Ajax 仍在执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42760252/

相关文章:

javascript - Typescript - 如何声明具有已知属性的匿名对象?

javascript - 使用 Lab 测试 Hapijs API

php - 处理跨多个模型文件的代码点火器中的事务

jquery - 检测具有固定位置的 div 何时跨过另一个元素

javascript - 条件比较中继承的真值检查

javascript - 导航栏已扩展但有一个子菜单总是折叠

php - 绕过 SSL 检查

php - MPDF 尝试拉伸(stretch)表格以适应剩余高度

javascript - 在 Bootstrap 模式中打开 href

javascript - 如何使用 JavaScript 更改轮播 (Bootstrap 4) 中的 class=”active”?