■解決したいこと
@Controllerを付与したコントローラクラスのメソッドに対してajax通信のgetリクエストを行うが
該当のメソッドが実行されない
(※デバッグで確認済み)
■行った手順
・コントローラクラスの作成
・@RequestMappingで受け取るURLを設定する
・javascriptファイル内でコントローラクラス内のメソッドに対しgetリクエストを行うよう記述
(testPageController)
package com.example.demo.web.sample.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping(value = "/sample") @Controller public class TestPageController { @RequestMapping(value = "/test2") public String getPage2() { return "成功しました"; } }
(test.js)
$(function() { $.get('http://localhost:8080/sample/sample/test2') .done(function(data) { alert(data); }); })
(test.html)※
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4"> <head> <!-- jquery --> <script src="https://code.jquery.com/jquery-3.3.1.js"></script> <script type="text/javascript" th:src="@{/js/sample/test.js}"></script> </head> <body> <p>テスト</p> </body> </html>
※cssファイルはなし
■試したこと
1 URLがマッピングされていない?
→URLを直接ブラウザに入力すると該当のメソッドにリクエストが送られることを確認(デバッグモードで確認)
2 jsファイルは動いている?
→chromの開発ツールを使って確認。$.getの処理が実行されていることは確認されたが、.doneには処理が移行していないためサーバ側へのリクエストが失敗していると考えられる
3 @RequestMappingのconsumesを使って、Content-Typeを明示してみる
→AjaxリクエストのAcceptヘッダの確認方法が分からず未実施