这个ajax请求有什么问题?

时间:2017-09-29 22:13:58

标签: javascript ajax

我需要使用ajax从我的数据库中获取一些数据。我使用Node JS和Express来处理路由。 这是后端代码:

router.get('/isAuth', ensureLoggedIn, (req, res) => {
Permit.find({}).populate('authBy').exec()
  .then(permits =>  res.jsonp(permits))
  .catch(err => res.send(err));
});

这是客户方: const allPermits = document.getElementById(' allPermits'),       table = document.querySelector(' table tbody');

allPermits.addEventListener('click', getData);
function getData() {
  let xhr = new XMLHttpRequest();
  xhr.open('get', '/permits/isAuth', true);
  xhr.onload = () => {
    if (this.status == 200) {
      let permitData = this.responseText;
      let responseData = '';
      permitData.forEach((permit) => {
        responseData +=
          `<tr class="dataRow">
              <td>${permit.name}</td>
              <td>${permit.destination}</td>
              <td>${permit.fromD}</td>
              <td>${permit.toD}</td>
              <td>${permit.notes}</td>
              <td>
                <button class="deletePermit" data-id="${permit._id}"><i class="fa fa-trash"></i></button>
              </td>
          </tr>`;
      })
      table.innerHTML = responseData;
    }
  }
  xhr.send();
}

问题是这条线不起作用:table.innerHTML = responseData;。 我也试过console.log(responseData)但除了ajax请求的成功消息之外我什么也看不见 - https://image.prntscr.com/image/6Otihd6jSMWPRdoz4y6y9g.png;

谢谢!

1 个答案:

答案 0 :(得分:4)

因为您使用的是箭头功能,this方法中的onload不会引用请求对象,所以this.status === 200永远不会 是真的。改为使用函数表达式。

有关详细信息,请参阅