前提・実現したいこと
Java(Spring boot)、HTML(Thymeleaf)、Javascript(jquery, ajax)を使用し、簡単なWebサービスを構築しています。
基本的なサービスの概要は、以下の通りです。
<サービス概要>
・バックエンドのサーバ(Spring bootで構築)から音楽データの一覧情報を取得
・それをthymeleafの"th:each"属性の繰り返し処理でHTML上に表示
・各音楽データについてそれぞれ"いいね"ボタンを設置し、押下された場合、ajaxを用いてそのデータをバックエンドに送り処理を行う
<やりたいこと>
"th:each"の繰り返し処理内にいいねボタンを設置していますが、そのbuttonのidがそれぞれのデータと対応させ、javascript側でそのidを取得したいと考えています。
しかし、現状は以下の通りコーディングしていますが、その場合先頭の情報のみのidしか取得できず、それぞれのデータに対応したいいねボタンが機能していません。
<質問事項>
ですので、繰り返し処理内で、それぞれのデータのidを取得するにはどのようにすれば良いのかご教授いただきたいです。
または、他に各データといいねボタンを対応させ、そのデータを取得する方法があれば教えていただきたいです。
よろしくお願いいたします。
該当のソースコード
HTML
1<div th:each="songs:${songs}"> 2<iframe th:src="'https://open.spotify.com/embed/track/'+${songs.songId}" width="300" height="380" frameborder="0" allowtransparency="true" allow="encrypted-media"></iframe> 3<input type="button" th:id="ajax_btn" value="いいね" th:name="${songs.songId}"/><br /> 4</div>
JavaScript
1$(function() { 2 3 // Ajax通信テスト ボタンクリック 4 $("#ajax_btn").click(function() { 5 6 var element = document.getElementById('ajax_btn'); 7 var param = element.getAttribute("name"); 8 9 $.ajax({ 10 type : "GET", 11 url : "getTestData", 12 dataType : "json", 13 data : { 14 songId : param 15 }, 16 success : function(data) { 17 success(data); 18 }, 19 error : function(XMLHttpRequest, textStatus, errorThrown) { 20 error(XMLHttpRequest, textStatus, errorThrown); 21 } 22 }); 23 }); 24}); 25 26function success(data) { 27 alert("いいね成功"+data); 28}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/10 15:42