前提・実現したいこと
phpを用いてクイズ形式のものを実装しようとしている途中で、クリックで反応するようにjQueryを用いてAjax処理を施したのですが、反応しません。
Ajax処理ができたかどうかalertで確認しようとしているところです。
うまくいけば値が返ってきて反応するはずなのですが。。。
解決していただけないでしょうか
発生している問題・エラーメッセージ
エラーメッセージは出ていません
<?php //index.php require_once('config.php'); require_once('Quiz.php'); $quiz = new Quiz(); $data = $quiz->getCurrentQuiz(); shuffle($data['a']); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Quiz</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div id="container"> <h1><?= h($data['q']); ?> </h1> <ul> <?php foreach ($data['a'] as $a) :?> <li class="answer"><?= h($a);?></li> <?php endforeach ; ?> </ul> <div id="btn" class="disabled">Next Question</div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="quiz.js"></script> </body> </html>
//quiz.js $(function(){ 'use strict'; $('.answer').on('click', function(){ var $selected = $(this); var answer = $selected.text(); $.post('/_answer.php', { }).done(function(res) { alert(res.correct_answer); if(answer === res.correct_answer){ } else { } }); }); });
<?php //_answer.php require_once('config.php'); require_once('Quiz.php'); $quiz = new Quiz(); $correctAnswer = $quiz->checkAnswer(); header('Content-Type: application/json; charset=UTF-8'); echo json_encode([ 'correct_answer' => $correctAnswer ]);
<?php //Quiz.php class Quiz{ private $_quizSet = []; public function __construct(){ $this->_setup(); if(!isset($_SESSION['current_num'])){ $_SESSION['current_num'] = 0 ; } } public function checkAnswer(){ $correctAnswer = $this->_quizSet[$_SESSION['correct_num']]['a'][0]; return $correctAnswer; } public function getCurrentQuiz(){ return $this->_quizSet[$_SESSION['current_num']]; } private function _setup(){ $this->_quizSet[] = [ 'q' => 'What is A?', 'a' => ['A0','A1','A2','A3'] ]; $this->_quizSet[] = [ 'q' => 'What is B?', 'a' => ['B0','B1','B2','B3'] ]; $this->_quizSet[] = [ 'q' => 'What is C?', 'a' => ['C0','C1','C2','C3'] ]; } }
<?php //config.php ini_set('display_errors', 1); session_start(); require_once('functions.php');
<?php //functions.php function h($s){ return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); }