ajax отображать сообщение, если успешно sh данные в базу данных - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть форма, которая позволяет пользователю назначить встречу, и форма обрабатывается ajax сейчас. Ранее форма представляла собой обычную форму, в которой использовалась запись, а PHP захватывал данные и помещал их в базу данных.

После добавления в ajax данные действительно помещаются в базу данных, но сообщения, которые я должен был показать в случае успеха или неудачи, не отображаются. У кого-нибудь есть идеи как это сделать?

Код php для подачи в БД

if (isset($_POST['requestAppt'])) {

    $date = $_POST['date'];

    $dateFormatted = date('Y-m-d', strtotime($date));
    $sanitisedDate = $conn->real_escape_string($dateFormatted);
    $time = $_POST['time'];
    $sanitisedTime = $conn->real_escape_string($time);
    $length = $_POST['lengthOfSession'];
    $sanitisedLength = $conn->real_escape_string($length);
    $details = $_POST['sessionDetails'];
    $sanitisedDetails = $conn->real_escape_string($details);

    if (($dateFormatted != "") && ($time != "") && ($details != "") && $coachID != "") {
        $pendingAppointment = "INSERT INTO ... (coach_id, user_id, date, time, duration, details, confirmed)
        VALUES ('$coachID', '$userid', '$sanitisedDate', '$sanitisedTime', '$sanitisedLength', '$sanitisedDetails', 0);";

        $executePendingAppointment = $conn->query($pendingAppointment);
        if (!$executePendingAppointment) {
            echo $conn->error;
            $requestError = "Sorry, your request has not been sent. Please check your input and try again.";
        } else {
            $requestSuccess = "Your request has been sent.";
        }

    } 
}

Форма

<div class='message-body'>
       <form action='appointments.php' method='POST' id='makeAppts'>
      <p> Date: <input class='input' type='text' id='datepicker' name='date' readonly></p>
       <p>Time: <input class='input' type='text' id='timepicker' name='time' readonly></p>
    <p> Duration: <div class='select'>
    <select  name='lengthOfSession'>
      <option>30 Minutes</option>
      <option>1 Hour</option>
      <option>90 Minutes</option>
      <option>2 hours</option>
    </select>
  </div>
       <p>Your Coach:<input class='input' type='text' id='coach'  value='$coachName' name='coachName' readonly></p>
       <p>Session details: : <input class='input' type='text' id='timeSelect' placeholder='I want to work on my glutes' name='sessionDetails'></p>
       ";

    echo "<div id='ajaxResult'> </div>";
    if (isset($requestError)) {
        echo "<p class='buttonError'>$requestError</p>";
    } else if (isset($requestSuccess)) {
        echo "<p class='buttonSucc' >$requestSuccess</p>";
    }
    echo "<p class='apptButton'><input type='submit' class='button is-primary appointmentSubmit' value='Request Appointment' name='requestAppt'> </p>
    </form>

       </div> <!-- end of message body-->

ajax

$('#makeAppts').on('submit', function() {
  var that = $(this),
  url = that.attr('action'),
  type = that.attr('method'),
  data = {};

  that.find('[name]').each(function(index, value) {
    var that = $(this),
    name = that.attr('name'),
    value = that.val();
data[name] = value;


}); 


$.ajax ({
  url: url,
  type: type,
  data: data,
  success: function(data){
    $('#makeAppts').trigger('reset');
    $('#success').fadeIn().html(data);



  }

});



return false

});

I пытался сделать что-то вроде этого, но это происходит постоянно и заменяет кнопку отправки

Doing something like this will put success no matter if the query doesn't get sent, and replaces the button

$.ajax ({
  url: url,
  type: type,
  data: data,
  success: function(data){
    $('#makeAppt').trigger('reset');
    $('#success').fadeIn().html(data);
    $('#ajaxResult').html('Success');
  }

});

И это выдает ошибку каждый раз, когда страница загружается

if(isset($_POST['date'],$_POST['time'],$_POST['coachName'],$_POST['lengthOfSession'],$_POST['sessionDetails'],)) {
    $requestSuccess = "Your request has been sent.";
} else {
    $requestError = "Sorry, your request has not been sent. Please check your input and try again.";

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...