質問編集履歴

2

タイトル変更ミス

2021/01/24 06:15

投稿

CCCPplusUSA
CCCPplusUSA

スコア3

test CHANGED
@@ -1 +1 @@
1
- どこがうまく動いていないのかわからない(ボタンをクリック⇒$.ajax⇒ServletのdoGet()⇒JavaBeans
1
+ $.ajaxのdataがうまく送れていない(ボタンをクリック⇒$.ajax⇒ServletのdoGet())
test CHANGED
File without changes

1

インデントを揃えた&JavaBeansがいらないことに気づいた&ServletのanswerButtonCountUpValueにstaticが必要だった

2021/01/24 06:15

投稿

CCCPplusUSA
CCCPplusUSA

スコア3

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- id = "question"に表示される質問「1+1は」に対しid = "input"のテキストフォームに「2です」と入力して
1
+ id = "question"に表示される質問「アルファベットの最初の一文字を大文字で答えてください。」に対しid = "input"のテキストフォームに「A」と入力して
2
2
 
3
3
  id = "answerButton"の「答える」ボタンをクリックしても「不正解です」
4
4
 
@@ -18,8 +18,6 @@
18
18
 
19
19
  <html>
20
20
 
21
-
22
-
23
21
  <head>
24
22
 
25
23
  <meta charset="UTF-8">
@@ -28,16 +26,12 @@
28
26
 
29
27
  </head>
30
28
 
31
-
32
-
33
29
  <body>
34
30
 
35
31
  <h1 id="title">10分以内に質問に答えよう!</h1>
36
32
 
37
33
  <nav>
38
34
 
39
-
40
-
41
35
  <ul id = "time"></ul>
42
36
 
43
37
  <ul id = "question"></ul>
@@ -46,20 +40,14 @@
46
40
 
47
41
  <ul id = "answer"></ul>
48
42
 
49
-
50
-
51
43
  </nav>
52
44
 
53
-
54
-
55
45
  <p>
56
46
 
57
47
  <button id="startButton">スタート</button>
58
48
 
59
49
  </p>
60
50
 
61
-
62
-
63
51
  <script src = "jquery-3.5.1.min.js"></script>
64
52
 
65
53
  <script src = "index.js"></script>
@@ -76,7 +64,7 @@
76
64
 
77
65
  var setTime = 600;
78
66
 
79
- var answerButtonCountUpValue;
67
+ var answerButtonCountUpValue = 0;
80
68
 
81
69
 
82
70
 
@@ -86,10 +74,6 @@
86
74
 
87
75
 
88
76
 
89
- answerButtonCountUpValue = 0;
90
-
91
-
92
-
93
77
  $("#startButton").on("click", function() {
94
78
 
95
79
  timerID = setInterval(function(){
@@ -110,31 +94,31 @@
110
94
 
111
95
  var milli = Math.floor((setTime - Math.floor(setTime)) * 100);
112
96
 
113
- $("#time").html((min < 10 ? "0" + min : min) + ":" + (sec < 10 ? "0" + sec : sec) +
97
+ $("#time").html((min < 10 ? "0" + min : min) + ":" + (sec < 10 ? "0" + sec : sec) + ":" + (milli < 10 ? "0" + milli : milli));
114
-
115
- ":" + (milli < 10 ? "0" + milli : milli));
98
+
116
-
117
- }
99
+ }
118
-
100
+
119
- }, 10);
101
+ }, 10);
120
-
102
+
103
+
104
+
121
- $("#title").html("");
105
+ $("#title").html("");
122
-
106
+
123
- $("#question").html("1+1は?");
107
+ $("#question").html("アルファベットの最初の一文字を大文字で答えてください。");
124
-
108
+
125
- $("<input>", {
109
+ $("<input>", {
126
-
110
+
127
- type: "text",
111
+ type: "text",
128
-
112
+
129
- id : "input",
113
+ id : "input",
130
-
114
+
131
- }).appendTo("#input_answer");
115
+ }).appendTo("#input_answer");
132
-
116
+
133
- $("#startButton").remove();
117
+ $("#startButton").remove();
134
-
118
+
135
- $("p").append("<button id=\"answerButton\"></button>");
119
+ $("p").append("<button id=\"answerButton\"></button>");
136
-
120
+
137
- $("#answerButton").html("答える");
121
+ $("#answerButton").html("答える");
138
122
 
139
123
  });
140
124
 
@@ -142,264 +126,228 @@
142
126
 
143
127
  //urlAnswerServletと関わりがあるのはここだけ
144
128
 
129
+ //「スタートボタン」をクリックしたときに作られた「答えるボタン」をクリックしたら
130
+
145
131
  $("p").on("click", "#answerButton", function() {
146
132
 
133
+ $.ajax({
134
+
135
+ type : "GET",
136
+
137
+ scriptCharset: "UTF-8",
138
+
139
+ url : "http://localhost:8080/QAcountdown/urlAnswerServlet",
140
+
141
+ data : {answer : $("#input").val()}
142
+
143
+ }).done(function(data) {
144
+
145
+ answerButtonCountUpValue += 1;
146
+
147
+ if(answerButtonCountUpValue < 5) {
148
+
149
+ $("#answer").html(data);
150
+
151
+ $("#answerButton").remove();
152
+
153
+ $("p").append("<button id=\"nextButton\"></button>");
154
+
155
+ $("#nextButton").html("次へ");
156
+
157
+ } else if (answerButtonCountUpValue == 5) {
158
+
159
+ $("#answer").html(data);
160
+
161
+ $("#answerButton").remove();
162
+
163
+ $("p").append("<button id=\"nextButton\"></button>");
164
+
165
+ $("#nextButton").html("終える");
166
+
167
+ }
168
+
169
+ }).fail(function() {
170
+
171
+ alert("読み込み失敗");
172
+
173
+ });
174
+
175
+ });
176
+
177
+
178
+
179
+ //「答えるボタン」をクリックしてできたものに問題を追加するだけ
180
+
181
+ //「次へボタン」or「終えるボタン」をクリック
182
+
183
+ $("p").on("click", "#nextButton", function() {
184
+
185
+ $("#input").remove();
186
+
187
+ $("<input>", {
188
+
189
+ type: "text",
190
+
191
+ id : "input",
192
+
193
+ }).appendTo("#input_answer");
194
+
195
+ $("#answer").html("");
196
+
197
+ $("#nextButton").remove();
198
+
199
+ $("p").append("<button id=\"answerButton\"></button>");
200
+
201
+ $("#answerButton").html("答える");
202
+
203
+ if(answerButtonCountUpValue === 1) {
204
+
205
+ $("#question").html("アルファベットの二文字目を大文字で答えてください。");
206
+
207
+ } else if (answerButtonCountUpValue === 2) {
208
+
209
+ $("#question").html("アルファベットの三文字目を大文字で答えてください。");
210
+
211
+ } else if (answerButtonCountUpValue === 3) {
212
+
213
+ $("#question").html("アルファベットの四文字目を大文字で答えてください。");
214
+
215
+ } else if (answerButtonCountUpValue === 4) {
216
+
217
+ $("#question").html("アルファベットの五文字目を大文字で答えてください。");
218
+
219
+ } else if (answerButtonCountUpValue === 5) {
220
+
221
+ $("#title").html("終了です!");
222
+
223
+ clearInterval(timerID);
224
+
225
+ $("#question").html("");
226
+
227
+ $("#input").remove();
228
+
229
+ $("#answerButton").remove();
230
+
231
+ }
232
+
233
+ });
234
+
235
+
236
+
237
+ });
238
+
239
+ ```
240
+
241
+ ```Java
242
+
243
+ package servlet;
244
+
245
+
246
+
247
+ import java.io.IOException;
248
+
249
+ import java.io.PrintWriter;
250
+
251
+ import java.util.HashMap;
252
+
253
+ import java.util.Map;
254
+
255
+
256
+
257
+ import javax.servlet.ServletConfig;
258
+
259
+ import javax.servlet.ServletException;
260
+
261
+ import javax.servlet.annotation.WebServlet;
262
+
263
+ import javax.servlet.http.HttpServlet;
264
+
265
+ import javax.servlet.http.HttpServletRequest;
266
+
267
+ import javax.servlet.http.HttpServletResponse;
268
+
269
+
270
+
271
+ @WebServlet(urlPatterns={"/urlAnswerServlet"})
272
+
273
+ public class urlAnswerServlet extends HttpServlet {
274
+
275
+
276
+
277
+ static int answerButtonCountUpValue;
278
+
279
+ static String[] response_answer = {"A", "B", "C", "D", "E"};
280
+
281
+
282
+
283
+ private static final long serialVersionUID = 1L;
284
+
285
+
286
+
287
+ public urlAnswerServlet() {
288
+
289
+ super();
290
+
291
+ }
292
+
293
+
294
+
295
+ public void init(ServletConfig config) throws ServletException{
296
+
297
+ super.init(config);
298
+
299
+ answerButtonCountUpValue = 0;
300
+
301
+ }
302
+
303
+
304
+
305
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
306
+
307
+ try {
308
+
309
+ //パラメータ取得
310
+
311
+ String input_answer = request.getParameter("answer");
312
+
313
+ //doGet()が呼ばれた回数をカウント
314
+
147
315
  answerButtonCountUpValue++;
148
316
 
149
- $.ajax({
150
-
151
- type : "GET",
152
-
153
- scriptCharset: "UTF-8",
154
-
155
- url : "http://localhost:8080/QAcountdown/urlAnswerServlet",
156
-
157
- data : {answer : $("#input").val()}
158
-
159
- }).done(function(data) {
160
-
161
- if(answerButtonCountUpValue <= 4) {
162
-
163
- $("#answer").html(data);
164
-
165
- $("#answerButton").remove();
166
-
167
- $("p").append("<button id=\"nextButton\"></button>");
168
-
169
- $("#nextButton").html("次へ");
170
-
171
- } else if (answerButtonCountUpValue == 5) {
172
-
173
- $("#answer").html(data);
174
-
175
- $("#answerButton").remove();
176
-
177
- $("p").append("<button id=\"nextButton\"></button>");
178
-
179
- $("#nextButton").html("終える");
180
-
181
- }
182
-
183
- }).fail(function() {
184
-
185
- alert("読み込み失敗");
186
-
187
- });
188
-
189
- });
190
-
191
-
192
-
193
- //answerボタンをクリックしてできたものに問題を追加するだけ
194
-
195
- $("p").on("click", "#nextButton", function() {
196
-
197
- $("#input").remove();
198
-
199
- $("<input>", {
200
-
201
- type: "text",
202
-
203
- id : "input",
204
-
205
- }).appendTo("#input_answer");
206
-
207
- $("#answer").html("");
208
-
209
- $("#nextButton").remove();
210
-
211
- $("p").append("<button id=\"answerButton\"></button>");
212
-
213
- $("#answerButton").html("答える");
214
-
215
- if(answerButtonCountUpValue === 1) {
216
-
217
- $("#question").html("2+2は?");
218
-
219
- } else if (answerButtonCountUpValue === 2) {
220
-
221
- $("#question").html("3+3は?");
222
-
223
- } else if (answerButtonCountUpValue === 3) {
224
-
225
- $("#question").html("4+4は?");
226
-
227
- } else if (answerButtonCountUpValue === 4) {
228
-
229
- $("#question").html("5+5は?");
230
-
231
- } else if (answerButtonCountUpValue === 5) {
232
-
233
- $("#title").html("終了です!");
234
-
235
- clearInterval(timerID);
236
-
237
- $("#question").html("");
238
-
239
- $("#input").remove();
240
-
241
- $("#answerButton").remove();
242
-
243
- }
244
-
245
- });
246
-
247
-
248
-
249
- });
317
+ Map<Integer, String> QA = new HashMap<>();
318
+
319
+ QA.put(answerButtonCountUpValue, response_answer[(answerButtonCountUpValue - 1)]);
320
+
321
+ //ヘッダ設定
322
+
323
+ response.setContentType("text/html; charset= UTF-8");
324
+
325
+ //pwオブジェクト
326
+
327
+ PrintWriter pw = response.getWriter();
328
+
329
+ if(input_answer.equals(QA.get(answerButtonCountUpValue))) {
330
+
331
+ pw.print("正解です。");
332
+
333
+ } else {
334
+
335
+ pw.print("不正解です。");
336
+
337
+ }
338
+
339
+ //クローズ
340
+
341
+ pw.close();
342
+
343
+ } catch(Exception e) {
344
+
345
+ e.printStackTrace();
346
+
347
+ }
348
+
349
+ }
350
+
351
+ }
250
352
 
251
353
  ```
252
-
253
- ```Java
254
-
255
- package servlet;
256
-
257
-
258
-
259
- import java.io.IOException;
260
-
261
- import java.io.PrintWriter;
262
-
263
-
264
-
265
- import javax.servlet.ServletConfig;
266
-
267
- import javax.servlet.ServletContext;
268
-
269
- import javax.servlet.ServletException;
270
-
271
- import javax.servlet.annotation.WebServlet;
272
-
273
- import javax.servlet.http.HttpServlet;
274
-
275
- import javax.servlet.http.HttpServletRequest;
276
-
277
- import javax.servlet.http.HttpServletResponse;
278
-
279
-
280
-
281
- import model.QandA;
282
-
283
-
284
-
285
- @WebServlet(urlPatterns={"/urlAnswerServlet"})
286
-
287
- public class urlAnswerServlet extends HttpServlet {
288
-
289
-
290
-
291
- int answerButtonCountUpValue;
292
-
293
- String[] response_answer = {"2です", "4です", "6です", "8です", "10です"};
294
-
295
- private static final long serialVersionUID = 1L;
296
-
297
- public urlAnswerServlet() {
298
-
299
- super();
300
-
301
- }
302
-
303
- public void init(ServletConfig config) throws ServletException{
304
-
305
- super.init(config);
306
-
307
- answerButtonCountUpValue = 0;
308
-
309
- }
310
-
311
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
312
-
313
- try {
314
-
315
- //パラメータ取得
316
-
317
- String input_answer = request.getParameter("answer");
318
-
319
- //処理
320
-
321
- answerButtonCountUpValue++;
322
-
323
- QandA qandA = new QandA(answerButtonCountUpValue, input_answer, response_answer[answerButtonCountUpValue]);
324
-
325
- ServletContext application = this.getServletContext();
326
-
327
- application.setAttribute("qandA", qandA);
328
-
329
- QandA QA = (QandA)application.getAttribute("qandA");
330
-
331
- //ヘッダ設定
332
-
333
- response.setContentType("text/html; charset= UTF-8");
334
-
335
- //pwオブジェクト
336
-
337
- PrintWriter pw = response.getWriter();
338
-
339
- pw.print(QA.getResponse_answer());
340
-
341
- //クローズ
342
-
343
- pw.close();
344
-
345
- } catch(Exception e) {
346
-
347
- e.printStackTrace();
348
-
349
- }
350
-
351
- }
352
-
353
- }
354
-
355
- ```
356
-
357
- ```Java
358
-
359
- package model;
360
-
361
- import java.io.Serializable;
362
-
363
- import java.util.HashMap;
364
-
365
- import java.util.Map;
366
-
367
-
368
-
369
- public class QandA implements Serializable {
370
-
371
- private int count;
372
-
373
- private String input_answer;
374
-
375
- Map<Integer, String> QA = new HashMap<>();
376
-
377
- public QandA() {}
378
-
379
- public QandA(int count, String input_answer, String response_answer) {
380
-
381
- this.count = count;
382
-
383
- this.input_answer = input_answer;
384
-
385
- QA.put(count, response_answer);
386
-
387
- }
388
-
389
- public String getResponse_answer() {
390
-
391
- if(QA.get(count) == input_answer) {
392
-
393
- return "正解です";
394
-
395
- } else {
396
-
397
- return "不正解です";
398
-
399
- }
400
-
401
- }
402
-
403
- }
404
-
405
- ```