以上代码存在的一个问题是你使用了同步的 AJAX 请求,这会导致整个浏览器 UI 被卡住,包括直接修改进度条 CSS 的操作也无法响应。此外,你使用了 for 循环来循环提交请求,这样会在瞬间向后台发送大量的请求,可能会导致后台被卡死。
为了解决这些问题,你可以考虑使用异步的 AJAX 请求,并使用回调函数来处理每个请求的结果。此外,你还可以考虑使用队列来依次处理每个请求,以确保不会同时向后台发送过多的请求。
具体来说,你可以使用 jQuery 的 .ajax() 函数来发送异步的 AJAX 请求,然后在每个请求的回调函数中处理请求结果。在处理完当前请求后,你可以将其从队列中删除并继续处理下一个请求。以下是一个简单的示例代码:
var uploadQueue = [];
function uploadNext() {
if (uploadQueue.length > 0) {
var item = uploadQueue.shift();
$.ajax({
type: "POST",
contentType: 'application/json',
url: "xxxxxx",
dataType: 'json',
success: function (res) {
// 处理请求结果
if (res.msg == "error") {
result = false;
} else {
uploadNext();
}
},
});
}
}
$("#btn_UpLoad").on('click', function () { //按钮响应
var result = true;
for (var i = 0; i < 1000; i++) {
uploadQueue.push(i);
}
uploadNext();
});
在这个代码示例中,我们首先定义了一个数组 uploadQueue,用于存储要上传的数据。在按钮点击事件中,我们将每个数据项添加到 uploadQueue 数组中。然后我们调用 uploadNext 函数来处理队列中的请求。uploadNext 函数会从队列中取出第一个请求,并使用 $.ajax() 函数发送异步的 AJAX 请求。在每个请求的回调函数中,我们处理请求结果,并调用 uploadNext 函数来处理下一个请求。如果请求失败,我们将 result 设置为 false,并退出循环。如果所有请求都成功完成,我们将 result 设置为 true。