前提・実現したいこと
初心者です。
今現在、Spring bootを使ってECサイトを作成している最中です。
今やろうとしていることは、新規アカウント登録からユーザー名を入力した際、同名のユーザー名があった場合にjQueryによってDBに問合せてアラートを表示するというものです。
つまり、「webページにユーザー名を入力→DBに問合せ→ユーザー名が重複した際にアラートを表示」という感じです。
ですが、jQueryがうまく動作しないのでアラートが表示できなくて困っています。
おそらく、ajaxの表記方法がおかしいと思うのですが、うまくインポートする方法を教えていただきたいです。
以下、抜粋プログラムです。
該当のソースコード
userRepository.java
package jp.co.internous.ecsite.model.dao; public interface UserRepository extends JpaRepository<User, Long> { @Query(value = "SELECT COUNT(id) FROM user WHRER user_name = ?", nativeQuery = true) int countByUserName(@Param("userName") String userName); }
IndexController.java
package jp.co.internous.ecsite.controller; @ResponseBody @PostMapping("api/userName") public boolean isDupError(@RequestBody SingUp singup) { int count = userRepos.countByUserName(singup.getUserName()); return count > 0; } }
html
1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<title>ECサイト</title> 6<link href="/css/style.css" th:href="@{/css/style.css}" rel="stylesheet" /> 7<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 8<script> 9 10$(() => { 11 $('#userName').blur(function() { 12 let user = $('#userName'); 13 $.ajax({ 14 url: '/ecsite/api/userName', 15 type: 'POST', 16 data: { 17 "userName": user.val() 18 } 19 }) 20 .then((result) => { 21 if (result) { 22 alert('ユーザー名が存在するため使用できません。'); 23 } 24 }, () => { 25 alert('Error: ajax connection failed.'); 26 }); 27 }); 28 29}); 30</script> 31</head> 32<body> 33 34<header> 35 <h1>My EC Site -- SingUp page</h1> 36</header> 37 38<div id="singUp"> 39 <h2>新規ユーザー登録</h2> 40 41 <form name="addSingUp" id="addSingUp" method="post" 42 action="/ecsite/addSingup" th:action="@{/ecsite/addSingup}"> 43 <p>ユーザー名:<input type="text" name="userName" id="userName" /></p> 44 45 <p>パスワード :<input type="password" name="password" id="password" /></p> 46 47 <p>フルネーム :<input type="text" name="fullName" id="fullName" /></p> 48 <button type="button" id="registerButton">新規登録</button> 49 </form> 50</div> 51</body> 52</html>