我需要使用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;
谢谢!
答案 0 :(得分:4)
因为您使用的是箭头功能,this
方法中的onload
不会引用请求对象,所以this.status === 200
永远不会
是真的。改为使用函数表达式。
有关详细信息,请参阅