データベースからsqlで抜いてきたデータがあり、それをphpでforeachさせhtmlを作成したのが以下です。
php
1<?php foreach ($days as $day) : ?> 2 <div class="list"> 3 <?php print(htmlspecialchars($day['day_data'], ENT_QUOTES)); ?> 4 /<?php print(htmlspecialchars($day['memo'], ENT_QUOTES)); ?> 5 <span class="price"><?php print(htmlspecialchars($day['day_price'], ENT_QUOTES)); ?></span> 6 </div>
完成系は以下です(日付、メモ、価格の三つがデータベースから取ってきた物)
html
1<div class="list">"2021-12-10 / ガンダム" <span class="price">5000</span></div> 2<div class="list">"2021-12-10 / eva "<span class="price">8000</span></div> 3<div class="list">"2021-12-10 / はなはな" <span class="price">12000</span></div>
課題:
jsのXHRでAjaxです。
javascript
1function period() { 2 if (start != '' && end != '' && id != '') { 3 4 let data = { 5 "aid": id, 6 "ast": start, 7 "aend": end 8 } 9 let json = JSON.stringify(data); 10 11 var xhr = new XMLHttpRequest(); 12 xhr.open("POST", "loop_ajax.php"); 13 xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded;charset=UTF-8"); 14 xhr.send(json); 15 xhr.onreadystatechange = function () { 16 try { 17 if (xhr.readyState == 4) { 18 if (xhr.status == 200) { 19 let result = JSON.parse(xhr.response); 20 console.log(result); 21 22 //処理 23 24 } else { 25 } 26 } else { 27 } 28 } catch (e) { 29 } 30 }; 31 } 32 33} 34
これから書く「処理」手前の
javascript
1console.log(result);
の実行結果は以下です(chrome:検証consoleでの表示)
JSON
1(2) [{…}, {…}] 20: {id_link: '3', day_data: '2021-12-18', day_price: '2000', memo: ''} 31: {id_link: '3', day_data: '2021-12-23', day_price: '13000', memo: ''} 4*複数在り
このJSON形式からのHTML化に苦戦中です。
もう一度最終形
HTML
1<div class="list">"2021-12-10 / ガンダム" <span class="price">5000</span></div> 2<div class="list">"2021-12-10 / eva "<span class="price">8000</span></div> 3<div class="list">"2021-12-10 / はなはな" <span class="price">12000</span></div>
JSに不慣れでPHPみたいに書けない事は知っていたのですが、
foreachで4種の値を持つJSONデータを思い通りに動かせません。
どなたか解決いただけませんか?
また、ちょっと考え方を変えてみたアイデアがあります。
JSONをサーバーサイドに送った際、PHPのforeachでHTMLを作り上げてresultに返すのはどうか。。
しかし、件数が多ければ苦戦しそうな感じもします。
調べてもそれらしい記事は探せませんでした。
サーバー側で作り上げるのは有りでしょうか?
宜しくお願い致します。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。