1. ホーム
  2. Web プログラミング
  3. AJAX関連

メッセージ効果を更新することなくページを実現するAjax

2022-01-15 12:39:30

メッセージの効果を更新せずにページを実現するAjax

効果の実現


効果を発揮します

htmlセクションです。

 <div class="container">
 <h1 class="display-1">message board</h1>
 <hr>
 <div id="loading">Trying desperately to load data ..... </div>
 <ul id="messages" class="list-unstyled">

 </ul>
 <hr>
 <div class="form-group">
 <label for="txt_name">Calling: </label>
 <input class="form-control" id="txt_name" name="xxx" type="text">
 </div>
 <div class="form-group">
 <label for="txt_content">Message:</label>
 <textarea class="form-control" id="txt_content" cols="80" rows="10"></textarea>
 </div>
 <button type="button" id="btn_send" class="btn btn-primary">submit</button>
</div>

cssの部分です。

cssセクションは、bootstrap.cssを参照しています。

jsの部分です。

//--------- --implementation of page initialization data Start------ -----
<script>
 //Initialize, load data
 loadData();
 //Get the data that already exists and load it into the page
 /* Method: GET 
 Method name: /getMsg
 Parameters: None
 Return: all messages [JSON] */
 function loadData() {
 // 1. Create a new xhr object
 var xhr = new XMLHttpRequest();
 //2. Set request parameters and url
 xhr.open('GET', '/getMsg');
 //3. Call send method to send the request
 xhr.send();
 //4. Take a parameter and return the response structure of the server
 xhr.onload = function () {
 //convert JSON to an array
 var arr = JSON.parse(this.response);
 //Start traversing the array
 var str = '';
 arr.forEach(function (ele) {
  //splice the loop iterations into a string that
  str += `<li class="media">
   <img class="mr-3" src="avatar.png" alt=${ele.name}>
   <div class="media-body">
    <h4>${ele.name}</h4>
    <p>${ele.content}</p>
   </div>
   </li>`;
 });
 //get the ul Place the spliced li in the ul
 var mes = document.getElementById('messages');
 mes.innerHTML = str;
 //clear the default display of the spell being loaded
 if (mes.childNodes.length ! = 0) {
  //Get the loading id
  var loadMes = document.getElementById('loading');
  loadMes.innerHTML = "";
 }
 }
 }
 </script>
 //--------- --- Implement page initialization data end------ --

 //-------- implements the function of adding a message to the page Start ----------
 <script>
 //add a function to post a message
 /* 
 Method: POST
 Method name: /addMsg 
 Parameters: name[string]
  content:[string]
 Return value: add success: true 
  Failed to add: false
 */

 //Added method
 //Get the submit button
 var btn_send = document.getElementById("btn_send");
 btn_send.onclick = function () {
 //1. Create new xhr object
 var xhr = new XMLHttpRequest();
 //2. Set request parameters and url
 xhr.open('POST', '/addMsg');
 //3. Set the request header
 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 //Get the content of the address
 var txt_name = document.getElementById("txt_name");
 //Get the content of the message
 var txt_content = document.getElementById("txt_content");
 //4. Call send method to send the request
 xhr.send('name=' + txt_name.value + '&content= ' + txt_content.value);
 //5. Take a parameter to return the response structure of the server
 xhr.onload = function () {
 if (this.response === "true") {
  // After adding, reload
  loadData();
  //clear the input field text after adding
  txt_name.value = txt_content.value = '';
 } else {
  alert("Failed to add");
 }
 }
 }
 </script>
 //--------- -Implementation of the page add message function end-------- ----

そんなところでしょうか。質問やいいアイデアがあれば、どなたでもコメントください。

この記事が参考になれば幸いです。そして、スクリプト・ハウスを応援していただければ幸いです。