現在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タグの文字を数字にすると成功します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/24 10:45