2017-03-13 11 views
1

良い日のプログラマ!フォームを送信し、2つのajaxイベントでjqueryを使用してフォームを検証しようとしています。私はajax(timeconflict.php)を使用して、ユーザーの時間入力と競合があるかどうかを検証しています。しかし、それはエラーを返しても、他のajaxイベントはまだ実行中です(reserveroom.php)。私の文法のため申し訳ありませんが、ここに私のコードは、私は本当に誰かが私を助ける願っていAjaxでもまだエラーが発生しています。

$('#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; 
?> 

だ、このエラーは、すでに私の人生の2日間を食べ:(

+0

第1回Ajaxコールからの出力を得た後で第2回Ajaxコールを呼び出す –

+0

第2回ajaxをelse文に置き換えることを意味する@(e.length == 0) –

+0

はい、そこには2番目のajaxコールがあります –

答えて

1

あなたのコードを修正し、これは

$('#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' 
    }); 

} 
を働くことを願っています
+0

これを行うと、私が行った他のすべての検証はバイパスされます。たとえば、予約の終了時刻は、予約の開始時刻よりも大きくなければなりません。とにかく仲間を助けてくれてありがとう! –

+0

それは兄弟をバイパスしません、私はあなたのすべての条件を単一条件で置く。 –

+0

ハハハ!良いですね – netto

関連する問題