質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1771閲覧

$.ajaxとServletの通信がうまくいかないので助けてください!

CCCPplusUSA

総合スコア3

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/01/10 04:03

ボタンをクリックされたときに$.ajaxとServletで非同期通信を行いたいです。
しかし
$(function() {
});
の中には$.ajaxのほかにも
・ボタンをクリックしたときにカウントダウンを行う
・DOM操作を行う
などいろいろやっているせいなのかAjaxが通信を行いません
どうすればいいか途方にくれたのでアドバイスをお願いします!

自分的に怪しいと思うところがありまして
途中でIDが「answerButton」のボタンをDOM操作で作成していて
そのボタンを押すことが通信開始のイベントリスナーとなっています。
同じ
$(function() {
});
のなかでAjax通信のきっかけとなるボタンの作成はまずかったのか?
と思っております

index.html

1<!DOCTYPE html> 2<html> 3 4<head> 5 <meta charset="UTF-8"> 6 <title>10分以内に質問に答えよう!</title> 7</head> 8 9<body> 10<h1 id="title">10分以内に質問に答えよう!</h1> 11 <nav> 12 <ul id="time"></ul> 13 <ul id="question"></ul> 14 </nav> 15 16 <p> 17 <button id="startButton">スタート</button> 18 </p> 19 20 <script src = "jquery-3.5.1.min.js"></script> 21 <script src = "index.js"></script> 22</body> 23</html>

index.js

1var timerID; 2var setTime = 600; 3 4$(function() { 5 6$("#startButton").on("click", function() { 7 timerID = setInterval(function(){ 8 if(setTime <= 0) { 9 clearInterval(timerID); 10 $("#time").html("00:00:00"); 11 } else { 12 setTime -= 0.01; 13 var min = Math.floor(setTime / 60); 14 var sec = Math.floor(setTime % 60); 15 var milli = Math.floor((setTime - Math.floor(setTime)) * 100); 16 $("#time").html((min < 10 ? "0" + min : min) + ":" + (sec < 10 ? "0" + sec : sec) + ":" + (milli < 10 ? "0" + milli : milli)); 17 } 18 }, 10); 19 }); 20 21$("#startButton").on("click", function() { 22 $("#title").remove(); 23 24 $("#question").html("今話題の「鬼滅の刃」ですが主人公の名前をフルネームで答えなさい"); 25 26 $("nav").append("<ul><input type=\"text\" id=\"input\"></ul>"); 27 28 $("#startButton").remove(); 29 30 $("p").append("<button id=\"answerButton\"></button>"); 31 32 $("#answerButton").html("答える"); 33 }); 34 35$("#answerButton").on("click", function() { 36 var data = {request : $("#input").val()}; 37 $.ajax({ 38 type : "GET", 39 scriptCharset: "UTF-8", 40 url : "http://localhost:8080/QAcountdown/urlAnswerServlet", 41 data : data 42 }).done(function(data) { 43 alert("通信成功"); 44 $("nav").append("<ul><id=\"answer\"></ul>"); 45 $("#answer").html(data); 46 $("#answerButton").remove(); 47 $("p").append("<button id=\"nextButton\"></button>"); 48 $("#nextButton").html("次へ"); 49 }).fail(function() { 50 alert("読み込み失敗"); 51 }); 52 }); 53 });

urlAnswerServlet

1package servlet; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12@WebServlet(urlPatterns={"/urlAnswerServlet"}) 13public class urlAnswerServlet extends HttpServlet { 14 15 private static final long serialVersionUID = 1L; 16 17 public urlAnswerServlet() { 18 super(); 19 } 20 21 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 22 try { 23 String response1; 24 //パラメータ取得 25 String param1 = request.getParameter("request"); 26 //処理 27 if(param1.equals("竈門炭治郎")) { 28 response1 = "正解です。答えは「竈門炭治郎」でした"; 29 } else { 30 response1 = "違います。答えは「竈門炭治郎」でした"; 31 } 32 33 //ヘッダ設定 34 response.setContentType("text/html; charset= UTF-8"); //JSON形式, UTF-8 35 36 //pwオブジェクト 37 PrintWriter pw = response.getWriter(); 38 39 //出力 40 pw.print(response1); 41 42 //クローズ 43 pw.close(); 44 45 } catch(Exception e) { 46 e.printStackTrace(); 47 } 48 } 49}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/01/10 05:31

インデント合わせましょう。 あと jQuery をタグに追加すると、回答できる方々の目にとまりやすいと思います。
CCCPplusUSA

2021/01/10 07:32

アドバイスありがとうございます これからは見やすいようにこころがけます!
退会済みユーザー

退会済みユーザー

2021/01/10 07:39

そうですね、次からよろしくお願いします。 ちなみに、ですが、質問は後から編集できますよ。
guest

回答1

0

ベストアンサー

#startButtonをクリックする前には#answerButtonが無いので$("#answerButton").on("click"は登録されません。
要素作成時にクリックイベントを付けるなど書き換えましょう。

投稿2021/01/10 04:16

kei344

総合スコア69606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CCCPplusUSA

2021/01/10 07:29

ありがとうございました! $("p").on("click", "#answerButton", function() { とすることで後から追加したidにも対応できるようになりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問