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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

3回答

1442閲覧

JSPとサーブレットによるAjax処理

Chandler_Bing

総合スコア673

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2019/03/21 11:57

編集2019/03/22 10:34

現在JSPとサーブレットでAjax通信を行うサンプルコードを作っているのですが上手く行きません。ご教授お願いします。

流れとしてはsapnタグの値をクリックするとそれをJSで変数に入れAjaxでサーブレットにに送信し、加工して返すというものです。

JSP

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5 6<head> 7 <meta charset="UTF-8"> 8 <title>JavaAjax</title> 9 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 10 <style> 11 .container { 12 width: 600px; 13 padding: 40px 0; 14 margin: 0 auto; 15 } 16 17 span { 18 display: inline-block; 19 padding: 5px 30px; 20 border: 1px solid #000000; 21 } 22 </style> 23</head> 24 25<body> 26 <div class="main"> 27 <div class="container"> 28 <span class="select">ABC</span> 29 <span class="select">123</span> 30 <span id="result"></span> 31 </div> 32 </div> 33</body> 34<script> 35 $(function() { 36 function doAjax(text) { 37 return $.post('AjaxController', { 38 text: text 39 }) 40 } 41 42 $('.select').on('click', function() { 43 var text = $(this).text(); 44 console.log(text);//表示される 45 doAjax(text).done(function(result) { 46 console.log(result);//表示されない 47 console.log("成功です");//表示されない 48 $('#result').text(result); 49 }).fail(function(){ 50 console.log("失敗です");//表示されない 51 }) 52 }); 53 }); 54</script> 55 56</html>

これはサーブレットの処理です

Java

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/** 13 * Servlet implementation class AjaxController 14 */ 15@WebServlet("/AjaxController") 16public class AjaxController extends HttpServlet { 17 private static final long serialVersionUID = 1L; 18 19 protected void doGet(HttpServletRequest request, HttpServletResponse response) 20 throws ServletException, IOException { 21 22 } 23 24 protected void doPost(HttpServletRequest request, HttpServletResponse response) 25 throws ServletException, IOException { 26 27 response.setContentType("application/json; charset=UTF-8"); 28 PrintWriter out = response.getWriter(); 29 30 String text = request.getParameter("text"); 31 String reslut = "選択したのは" + text + "です"; 32 System.out.println(reslut); 33 out.print(reslut); 34 35 } 36 37}

★問題
サーブレット内の以下の部分はイクリプスのコンソールに表示されているので、送信は問題ないと思います。

String reslut = "選択したのは" + text + "です"; System.out.println(reslut);

ただその値がJSのdone()メソッドで受け取る事が出来ません。どこが間違いか教えていただけますでしょうか。

★現状
何も弄っていませんが、今回は123を押したクリックした時だけ成功します。一体何が原因なのでしょうか。同じ文字だと思うのですが。
spanタグの文字を数字にすると成功します。

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

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

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

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

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

guest

回答3

0

out.print(reslut); をしたあとに、 out.close(); が呼ばれていないので
接続が切断されていないので、呼び出し元(Javascript)の処理が進まないのではないでしょうか

投稿2019/03/22 18:06

YakumoSaki

総合スコア2027

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

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

Chandler_Bing

2019/03/24 10:45

ありがとうございます。それは関係ないと思います。なにせ222の様な数字だけ返ってきてABCの様な文字は返ってきません。どちらもStringに変更しているのにダメです。
guest

0

自己解決

外部jarファイルの位置です。

投稿2019/04/03 14:47

Chandler_Bing

総合スコア673

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

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

0

どっちも表示されないならレスポンスが返ってきてないのでは?
ネットワークコンソールの表示どうなってますか?

投稿2019/03/21 12:23

minehan

総合スコア170

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

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

Chandler_Bing

2019/03/21 12:36

ありがとうございます。そうだと思います。ネットのコンソールの表示は提示したJSのコードにかいてある コメントアウト部分の表示される部分しか出ません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問