今天在写项目的时候,Ajax请求回调函数checkComplete调用一次执行多次导致数据渲染了好几遍。然后debug找了好久问题,代码如下
req = new XMLHttpRequest();
if (req) {
//采用POST方式,异步传输
req.open("post", url, true);
//POST方式,必须加入如下头信息设定
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.onreadystatechange = checkComplete;
var data = "&id=" + studio;
req.send(data);
}
后来发现onreadystatechange是请求状态改变就会调用checkComplete()方法,然后将代码改成下面这样就好了。
req.onreadystatechange = function () {
if (req.status === 200 && req.readyState === 4) {
checkComplete()
}
};