У меня есть форма, в которой я использую jQuery $ .post, чтобы получить данные формы и отправить их в скрипт php.Затем скрипт отправляет обратно некоторые данные.Проблема, с которой я сталкиваюсь, заключается в том, что иногда (возможно, в 10% случаев) при нажатии кнопки «Отправить» в форме окно предупреждения не появляется?Это работает почти всегда, но в нечетное время окно предупреждения еще не отображается, если форма проходит проверку php и проверяет, что данные все еще вводятся.Это проблема времени?Я также заметил, что при тестировании на мобильных устройствах оповещения вообще не отображаются.Вот код JavaScript:
var jsonObj;
$(document).ready(function(){
$('#form').submit(function(){
var wScore = parseInt(document.getElementById('wScore').value);
var lScore = parseInt(document.getElementById('lScore').value);
var errors = 0;
if(lScore > wScore){
errors = 1;
}
if(errors != 0){
alert('Winnings runs MUST be greater than losing runs.');
return false;
}
var selNameW = document.getElementById("exampleInputEmail1");
document.getElementById("textWinner").value = selNameW.options[selNameW.selectedIndex].text;
var selNameL = document.getElementById("exampleInputPassword1");
document.getElementById("textLoser").value = selNameL.options[selNameL.selectedIndex].text;
$.post('query.php',$('#form').serialize())
.done(function(data){
jsonObj = JSON.parse(data);
if(jsonObj.status == 'error'){
alert(jsonObj.errorMessage);
}else{
alert("Successfully Entered! Winner: " + jsonObj.winner + " Loser: " + jsonObj.loser);
}
});
});
});
КОД PHP:
<?php
include "dbconnect.php";
$jsonData = [];
extract($_POST);
$exampleInputEmail1 = intval($exampleInputEmail1);
$exampleInputPassword1 = intval($exampleInputPassword1);
$qqq = "SELECT * FROM games WHERE winner = '$exampleInputEmail1' AND game_date = '$inputDate' AND loser = '$exampleInputPassword1'";
$result = $conn->query($qqq);
if($password !== 'slopitch19'){
$error = ['status' => 'error', 'errorMessage' => 'The password is incorrect or was left blank!'];
$jsonData = json_encode($error);
}
else if(empty($inputDate) || empty($wScore) || empty($lScore) || empty($password)){
$error = ['status' => 'error', 'errorMessage' => 'A field was left blank.'];
$jsonData = json_encode($error);
}
else if($exampleInputEmail1 == $exampleInputPassword1){
$error = ['status' => 'error', 'errorMessage' => 'The winning team cannot be the same as the losing team.'];
$jsonData = json_encode($error);
}
else if ($result->num_rows == 0){
$sql2 = "INSERT INTO games (winner, loser, game_date, winner_name, loser_name, winner_score, loser_score) VALUES ('$exampleInputEmail1', '$exampleInputPassword1','$inputDate', '$textWinner', '$textLoser', '$wScore', '$lScore')";
$sql = "UPDATE teams SET wins = wins + 1 WHERE team_id = '$exampleInputEmail1'";
$sql3 = "UPDATE teams SET losses = losses + 1 WHERE team_id = '$exampleInputPassword1'";
$values = ['status' => 'success', 'winner' => $textWinner, 'loser' => $textLoser];
$jsonData = json_encode($values);
$conn->query($sql);
$conn->query($sql3);
$conn->query($sql2);
$conn->close();
}else if($result->num_rows > 0){
$error = ['status' => 'error', 'errorMessage' => 'Someone else has already entered this game!'];
$jsonData = json_encode($error);
}
echo $jsonData;
?>