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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Ajax

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

Q&A

解決済

2回答

2051閲覧

jQueryのクリックイベント使用時、jqueryオブジェクト(?)を変数で表現したい

sabx

総合スコア200

JSP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Ajax

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

0グッド

0クリップ

投稿2016/08/08 11:34

編集2016/08/08 11:44

###タイトルだとなんのこっちゃなので…(ざっくりと概要)
下記開発環境でjQueryの$.ajax()を使用して非同通信をするwebアプリケーションを作成しています。
ざっくりアプリケーションの内容を話すと(開発環境とかは一番下に記載してあります)

1.top.jsp表示
2.top.jspのajaxメソッドでTopServlet.javaと非同期通信をしてDBから情報を取得し、JSON形式のデータを渡す(例 {{"id":1,"item":"gun"},{"id":2,"item":"sword"},...}
3.top.jspにてJSON形式のデータを整形して、<a>タグとしてappendする
4.top.jspにappendされた<a>タグを押下すると、またajaxメソッドが実行され、DetailServletにJSON形式のデータを引き渡す
5.DetailServletにてJSON形式のデータを整形し、idから取得される番号をDBから取得して、詳細情報を取得してくる(例 {{"id":1,"item":"gun","detail":"This gun is..."}}
6.top.jspにて、JSON形式を整形して、DBから取得してきた詳細情報をappendして表示する

以上となります。

###困っているところ
上記の4番のajaxメソッド押下時の処理が困っています。
上記3にてaタグをappendする際に、class属性に取得してきたidを指定しているのですが、そのidをどれを押してもDetailServletとajax通信できるようにしたいです。

###実装してあるjsを抜粋
以下にtop.jspに実装するjs部分を抜粋して載せさせていただきます。

$(function() { $.ajax({ type : 'GET', url : 'http://localhost:8080/sample/TopServlet', dataType : 'json', success : function(json) { var jsonObj = JSON.parse(json); for(var i=0;i < jsonObj.length;i++){ $('.append-object').append('<a href="" id="' + jsonObj[i].id + '" onclick="return false;" >' + jsonObj[i].item + '</a><br>'); } }, error : function(XMLHttpRequest, textStatus, errorThrown) { alert("エラーが発生しました:" + textStatus + ":\n" + errorThrown); } }); //下で困っています!上でaタグを追加したはいいけど、その追加されたaタグが押下された時に以下の処理を走らせたいです。さらに言えばid等どのaタグが押下されたか識別できる形で…(自分で考えられる限界が下記です。実行してもエラーになってしまいます...) $(document).on('click','a',function(e){ var id = $("a").attr("id"); $.ajax({ type : 'GET', url : 'http://localhost:8080/sample/DetailServlet', data : { "id" : id }, dataType : 'json', success : function(json) { var jsonObj = JSON.parse(json); }, error : function(XMLHttpRequest, textStatus, errorThrown) { alert("エラーが発生しました"); } }); }); });

###開発環境など

  • 使用言語

java8(Servlet,jsp)
jQuery(jquery-1.10.2.min)

拙い文章ではありますが、よろしくお願いいたします。

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

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

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

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

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

flied_onion

2016/08/08 11:37

複数行のコードは単一のバッククォートではなく、三連バッククォート (```)を前後の行に配置すると見やすくなります。
kei344

2016/08/08 12:44

どこまで出来ていて、どこで予定と違う挙動やエラーに遭遇しますか?また、デベロッパーツールでエラーが出ている場合その内容も追記ください。
guest

回答2

0

ベストアンサー

js

1var id = $("a").attr("id");

これだと先頭のアンカータグのアイテムのidがとれてしまうので、

js

1var id = $(this).attr("id");

とすればいいのではないでしょうか。

投稿2016/08/08 11:42

flied_onion

総合スコア2604

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

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

0

提示のソースだと、意図していない箇所のa要素をクリックしたときにも処理しようとしてしまうと思います。
できれば処理の対象を限定したほうがいいでしょうね。

$(document).on('click','.append-object a',function(e){ var id = $(this).attr("id");

こんな感じで、.append-object内のa要素に限定して、クリックした要素の特定はthisで行なえば良いと思います。

投稿2016/08/08 14:10

NatsumiOki

総合スコア1298

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問