回答までにお時間いただきすみません。
思いつくやり方としては
・クリックイベントでhiddenを取得してきてAjax通信
でしょうか。
例:※ビューは展開後のHTMLとして記述しています
HTML
1<ul id="list">
2<li>
3 <span>Test2</span>
4 <ul id="list1_1">
5 <li><a href="#">テスト1<input name="topic" type="hidden" value="test1"></a></li>
6 <li><a href="#">テスト2<input name="topic" type="hidden" value="test2"></a></li>
7 <li><a href="#">テスト3<input name="topic" type="hidden" value="test3"></a></li>
8 <li><a href="#">テスト4<input name="topic" type="hidden" value="test4"></a></li>
9 <li><a href="#">テスト5<input name="topic" type="hidden" value="test5"></a></li>
10 </ul>
11</li>
12
13<script>
14$(function(){
15 $('#list li ul li a').on('click',function(){
16 code = $(this).children("input").val(); //子要素のhiddenの内容を取得
17
18 $.ajax({
19 url: "/XXXXXX", //code受け取ってDBアクセス・結果をJSONで返す処理をしているURL
20 type :"post",
21 dataType: "json",
22 data: {
23 "code" : code
24 }
25 }).done(function(data) {
26 //取得結果をjson.parse()で配列に変換し、ループしつつ表示用HTMLとして整形
27
28 })
29 .fail(function() {
30 alert("失敗");
31 });
32 });
33});
34</script>
jsonを利用しているのはPHP(今回はLaravel)でDBから取得した情報の配列をjson_decode()で返すだけで良く、受け取ったjavascript側もjson.parse()して配列に戻せてデータの加工や整形が容易だからです。
javascript側で整形が面倒であれば、dataTypeをtextやhtmlに変更し、php側で表示用のhtmlを作って返却するのでも良いです。
ただ、hiddenを利用しなくてもそれぞれ固定値を渡すようであればhiddenを使わずとも
html
1<li><a href="#" data-topic="test1">テスト1</a></li>
2<li><a href="#" data-topic="test2">テスト2</a></li>
としておき、クリックイベントで
javascript
1code = $(this).data("topic"); //data属性値を取得
のようにした方がコードがスッキリするかなぁとも思います。
参考URL:
・jQuery 便利なonを使おう(on click)
・一般的なAjax通信を実装するには?($.ajax)
・laravel5・ajax・jqueryでPOSTするサンプル
・data属性をjQueryで使ってみる