Advertisement
avr39ripe

jsAJAXInClass

May 24th, 2021
807
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="en" id="html">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>XHR</title>
  6.     <style>
  7.         html,
  8.         body {
  9.             display: flex;
  10.             align-items: center;
  11.             justify-content: center;
  12.         }
  13.  
  14.         .container {
  15.             display: flex;
  16.             flex-direction: column;
  17.             justify-content: center;
  18.             align-content: center;
  19.             align-items: center;
  20.             margin-top: 30px;
  21.             position: relative;
  22.         }
  23.  
  24.         .mainDiv {
  25.             display: flex;
  26.             flex-direction: row;
  27.         }
  28.  
  29.         table, tr, td {
  30.             border: 1px solid black;
  31.             border-collapse: collapse;
  32.             padding: 5px;
  33.         }
  34.  
  35.         table {
  36.             width: 70%;
  37.             margin: 10px;
  38.         }
  39.     </style>
  40. </head>
  41. <body>
  42.     <div id="container" class="container">
  43.         <input type="number" id="userId">
  44.     </div>
  45.     <script>
  46.         'use strict'
  47.  
  48.         class UserDisplay {
  49.             constructor(container, idSource) {
  50.                 this._container = document.getElementById(container);
  51.                 this._idSource = document.getElementById(idSource);
  52.                 this._user = [];
  53.                 this._userId = 0;
  54.  
  55.                 this._idSource.addEventListener('change', (event) => {
  56.                     this._userId = event.target.value;
  57.                     this.getUser();
  58.                 });
  59.             }
  60.  
  61.             getUser() {
  62.                 let url = `https://jsonplaceholder.typicode.com/users?id=${this._userId}`;
  63.                 let method = 'GET';
  64.  
  65.                 let xhr = new XMLHttpRequest();
  66.  
  67.                 let selfObject = this;
  68.  
  69.                 xhr.open(method, url);
  70.                 //xhr.addEventListener('load', function () {
  71.  
  72.                 //    console.log(selfObject);
  73.  
  74.                 //    if (this.status >= 400) {
  75.                 //        console.log(`HTTP ERROR CODE: ${this.status}!`);
  76.                 //    }
  77.                 //    else {
  78.                 //        selfObject._user = JSON.parse(this.responseText);
  79.                 //        console.log(selfObject._user);
  80.  
  81.                 //        if (selfObject._user.length == 0) {
  82.                 //            alert('No such user!')
  83.                 //        }
  84.                 //        else {
  85.                 //            selfObject.renderUser()
  86.                 //        }
  87.                 //    }
  88.                 //});
  89.  
  90.                 xhr.addEventListener('load', (event) => {
  91.  
  92.                     //console.log(this);
  93.                     //console.log(event.target);
  94.  
  95.                     let xhr = event.target;
  96.  
  97.                     if (xhr.status >= 400) {
  98.                         console.log(`HTTP ERROR CODE: ${xhr.status}!`);
  99.                     }
  100.                     else {
  101.                         this._user = JSON.parse(xhr.responseText);
  102.                         //console.log(this._user);
  103.  
  104.                         if (this._user.length == 0) {
  105.                             alert('No such user!')
  106.                         }
  107.                         else {
  108.                             this.renderUser()
  109.                         }
  110.                     }
  111.                 });
  112.  
  113.                 xhr.send();
  114.             }
  115.  
  116.             renderUser() {
  117.                 let user = this._user[0];
  118.  
  119.                 let table = document.createElement('table');
  120.                 let elems = ['id', 'name', 'username', 'email'];
  121.  
  122.                 for (let el of elems) {
  123.                     let row = document.createElement('tr');
  124.                     let cell = document.createElement('td');
  125.                     cell.innerText = el;
  126.                     row.append(cell);
  127.                     cell = document.createElement('td');
  128.                     cell.innerText = user[el];
  129.                     row.append(cell);
  130.                     table.append(row);
  131.                 }
  132.  
  133.                 this._container.append(table);
  134.             }
  135.  
  136.         }
  137.  
  138.         function test() {
  139.             console.log(this);
  140.         }
  141.  
  142.  
  143.         {
  144.             //test();
  145.  
  146.             //let obj = { a: 10, test: test };
  147.             //obj.test();
  148.  
  149.             //let objSecond = { b: 42, z: 33, test: obj.test };
  150.             //objSecond.test();
  151.             //let freeTest = obj.test;
  152.  
  153.             //freeTest();
  154.  
  155.             //let masha = function () {
  156.  
  157.             //}
  158.  
  159.             let uDisp = new UserDisplay('container', 'userId');
  160.         }
  161.     </script>
  162. </body>
  163. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement