点击按钮之后,按钮禁用,然后调用封装的XMLHttpRequest,当发生网络错误时,按钮怎么解除禁用,按钮很多,而且还会持续增加
时间: 2023-08-31 20:30:02 浏览: 157
ajax调用中ie缓存问题解决方法
### 回答1:
您可以编写一个函数来处理这个问题,并在每个按钮被单击时调用该函数。以下是一个可能的解决方案:
```javascript
function sendRequest(button) {
// 禁用按钮
button.disabled = true;
// 创建XMLHttpRequest对象
var xhr = new XMLHttpRequest();
// 监听XMLHttpRequest事件
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
// 处理响应数据
} else {
// 处理网络错误,解除按钮禁用
button.disabled = false;
}
}
};
// 设置请求信息
xhr.open('GET', 'url', true);
xhr.send();
}
```
在这个函数中,我们首先禁用了传递给它的按钮,然后创建了一个XMLHttpRequest对象,并为其设置了一个onreadystatechange事件处理程序。在该事件处理程序中,我们检查了响应状态并处理了网络错误,解除按钮的禁用状态。
要将这个函数绑定到所有按钮上,您可以使用以下代码:
```javascript
var buttons = document.querySelectorAll('button');
for (var i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', function() {
sendRequest(this);
});
}
```
这段代码选择了所有的按钮,并为每个按钮添加了一个单击事件监听器,该监听器调用sendRequest函数并传递按钮本身作为参数。这样做可以确保在发生网络错误时只有单击的按钮被解除禁用,而不是所有的按钮。
### 回答2:
在点击按钮后,可以通过JavaScript代码禁用按钮,例如使用`disabled`属性来禁用按钮的交互功能。然后,通过封装的XMLHttpRequest发起网络请求。当网络错误发生时,可以通过监听XMLHttpRequest对象的`onerror`事件来判断网络错误的发生。一旦发生网络错误,可以解除按钮的禁用状态,以便用户再次操作。
针对按钮很多且会持续增加的问题,可以将按钮的禁用操作和网络请求封装成一个函数,并将点击按钮事件绑定到该函数上。这样,在点击任意按钮时,都会执行相同的操作。如果按钮是动态增加的,只需要通过监听按钮的创建事件,动态为新创建的按钮绑定点击事件即可。
以下是示例代码:
```javascript
// 点击按钮后的操作
function handleClick() {
var button = this;
button.disabled = true; // 禁用按钮
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) { // 请求完成
if (xhr.status === 200) { // 请求成功
// 在此处理请求成功的逻辑
} else {
// 网络错误发生
button.disabled = false; // 解除按钮的禁用状态
console.log('网络错误');
}
}
};
xhr.open("GET", "请求的URL");
xhr.send();
}
// 绑定点击事件到按钮
var buttons = document.querySelectorAll('按钮的选择器');
buttons.forEach(function(button) {
button.addEventListener('click', handleClick);
});
// 监听按钮的创建事件(假设是通过某个操作动态增加的按钮)
document.addEventListener('按钮创建事件', function(event) {
var button = event.target;
button.addEventListener('click', handleClick);
});
```
通过以上实现,无论点击哪个按钮,都会禁用该按钮并发起网络请求。当网络错误发生时,会解除按钮的禁用状态,方便用户重新操作。同时,对于动态增加的按钮也会自动绑定相同的点击事件。
阅读全文