2.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //! 如果想要发起一个http请求 可以调用全局对象中axios函数,同时传入一个配置对象即可
  2. const btnEle = document.getElementById('btn');
  3. const tBodyEle = document.getElementById('listBody');
  4. function loadData() {
  5. axios({
  6. url: 'http://localhost:3000/users', // 请求地址
  7. method: 'get', // 请求方法
  8. })
  9. .then((result) => {
  10. // axios 得到的响应 result 是什么
  11. console.log(result);
  12. let { code, msg, data } = result.data;
  13. // 2 校验数据的正确性,只有code == 200时 数据是正确的
  14. if (code !== 200) {
  15. return;
  16. }
  17. var tr, td;
  18. data.forEach((user) => {
  19. // 每循环一次,就新建一个tr DOM对象
  20. tr = document.createElement('tr');
  21. // 字符串拼接,在原生js操作dom中会频繁发生,但是存在一个问题 就是代码可读性 太低
  22. // 因此 在ES6 对字符串进行了一个扩展。叫做 模板字符串。
  23. // 模板字符串 中 可以 换行;也可以通过${}语法 将外部表达式的值 嵌入字符串中的指定位置
  24. td = `
  25. <td>
  26. <img class="avatar" src="${user.avatar}" alt="avatar" />
  27. </td>
  28. <td>${user.name}</td>
  29. <td>${user.password}</td>
  30. <td>${user.age}</td>
  31. <td>${user.sex === '0' ? '女' : '男'}</td>
  32. `; // 这就是模板字符串
  33. tr.innerHTML = td;
  34. // 下次循环开始前,记得将新建tr添加给tbody元素
  35. tBodyEle.append(tr);
  36. });
  37. })
  38. .catch((err) => {
  39. console.log(err);
  40. });
  41. }
  42. btnEle.addEventListener('click', function () {
  43. console.log('开始加载数据...');
  44. loadData();
  45. });