как определить оценку и буквенную оценку, используя JS PHP AJAX - PullRequest
0 голосов
/ 16 апреля 2020

Итак, я составил программу об экзамене, и мне нужно определить буквенные оценки студентов, но сначала они должны ответить на некоторые вопросы, а затем на основании того, какой балл получает студент, студент получит буквенную оценку, кто-то порекомендовал мне используйте AJAX, потому что мне нужно сделать сам процесс в форме без обновления, поэтому я попытался сделать это, но я запутался, может кто-нибудь мне помочь, пожалуйста.

Я запутался, потому что каждый раз, когда я нажимаю На кнопке результат всегда не был оценен

Вот коды:

 <div class = "form">
<button id = "submit" name = "submit"  value = "submit" > SUBMIT </button>
<div id="myModal" class="modal">
  <div class="modal-content">
    <h3> Are you sure you want to submit? </h3>
    <button id = "yes" name = "yes" class = "yes" value = "submit" onclick ="loadDoc()"> YES </button>
    <button id = "no" name = "no" class = "no"> NO </button>
  </div>
</div>


<div id="myModalLast" class="modalLast">
  <div class="modal-contentLast">
   <a href = "personal.php"> <span class="close">&times;</span> </a>

<div class = "pic">

</div>  
    <h3> Full name: Cathleen Joyce Imperial Almeda </h3>  
    <h3> Total items:20 <p id = "score" name = "scorename"></p> </h3>  
   <h1> <br><p id = "scores" name = "realscores"></p>

   Rank:<p id = "rank"></p>
</h1> 

  </div>
</div>
</div>

это для ajax части:

  <script>

function loadDoc(score) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      scoreElement.innerHTML = "Your Score: " + this.responseText;
      console.log('Grade calculation complete');
    }
  };
  xhttp.open("post", "examExtension.php", true);

  // Send the score like this.
  // This will look like 'score=18' and can be read by your PHP file.
  xhttp.send('score=' + score);
}
</script>

И это для examExtension. php:

   <?php

// Check if the score is given. If it is, continue. Otherwise stop the script.
if (!isset($_POST['score'])) {
  echo 'No score has been given';
  exit;
}


// Convert score value to a number.
$score = intval($_POST['score']);

if ($score > 19 and $score < 21) {
  echo "A+";
} else if ($score > 18 and $score < 20) {
  echo "A";
} else if($score > 17 and $score < 19) {
  echo "A-";
} else if ($score > 16 and $score < 18) {
  echo "B+";
} else if ($score > 15 and $score < 17) {
  echo "B";
} else if ($score > 14 and $score < 16) {
  echo "B-";
} else if ($score > 13 and $score < 15) {
  echo "C+";
} else if ($score > 12 and $score < 14) {
  echo "C";
} else if ($score > 11 and $score < 13) {
  echo "C-";
} else if ($score > 10 and $score < 12) {
  echo "D+";
} else if($score  > 9 and $score < 11) {
  echo "D";
}

exit;

?>

И, наконец, это для подсчета очков, оно основано на том, сколько переключателей правильно нажал студент.

    <script>
const scoreElement = document.getElementById("score");
const yesButton = document.getElementById("yes");

yesButton.addEventListener("click", function() {
  let numberOfCorrectAnswers = document.querySelectorAll("input[type=radio].correct:checked").length;

  // Pass amount of correct answers to the loadDoc function.
  loadDoc(numberOfCorrectAnswers);
  console.log('Calculating grade');
});
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...