Javascript 发送同步Ajax请求时显示微调器
我需要在向服务器发送同步Ajax请求以检索数据时显示微调器 我知道在异步模式下这样做更好,但我不允许这样做。 我还知道同步ajax请求会阻塞浏览器 我已经找到了一个带有setTimeout的解决方案来延迟ajax请求的调用,但是我的老板不希望我使用setTimeout 你有什么办法解决我的问题吗?多谢各位 在ajax请求上有一个.success()方法 下面是一些如何使用它的例子 不过,关于去润滑,这里还有一些争论 在ajax请求上有一个.success()方法 下面是一些如何使用它的例子 不过,关于去润滑,这里还有一些争论Javascript 发送同步Ajax请求时显示微调器,javascript,jquery,ajax,spinner,synchronous,Javascript,Jquery,Ajax,Spinner,Synchronous,我需要在向服务器发送同步Ajax请求以检索数据时显示微调器 我知道在异步模式下这样做更好,但我不允许这样做。 我还知道同步ajax请求会阻塞浏览器 我已经找到了一个带有setTimeout的解决方案来延迟ajax请求的调用,但是我的老板不希望我使用setTimeout 你有什么办法解决我的问题吗?多谢各位 在ajax请求上有一个.success()方法 下面是一些如何使用它的例子 不过,关于去润滑,这里还有一些争论 在ajax请求上有一个.success()方法 下面是一些如何使用它的例子
您可以在AJAX调用之前简单地
显示微调器,然后将其隐藏在AJAX调用的成功和错误中:
$(“#微调器”).show()//在AJAX调用之前显示微调器
$.ajax({
url:“test.html”,
方法:“POST”,
成功:功能(数据){
$(“#微调器”).hide();//调用后隐藏微调器
},
错误:函数(){
setTimeout(()=>{//我在这里设置setTimeout,这样您就有时间查看微调器了。
//复制此代码时将其删除。
$(“#微调器”).hide();//调用后隐藏微调器
},2000);
}
});代码>
#微调器{
显示:无;
宽度:10px;
高度:10px;
动画:旋转2s线性无限;
}
@关键帧旋转{
从{
变换:旋转(0度);
}
到{
变换:旋转(360度);
}
}
0
您可以在AJAX调用之前简单地显示微调器,然后将其隐藏在AJAX调用的成功和错误中:
$(“#微调器”).show()//在AJAX调用之前显示微调器
$.ajax({
url:“test.html”,
方法:“POST”,
成功:功能(数据){
$(“#微调器”).hide();//调用后隐藏微调器
},
错误:函数(){
setTimeout(()=>{//我在这里设置setTimeout,这样您就有时间查看微调器了。
//复制此代码时将其删除。
$(“#微调器”).hide();//调用后隐藏微调器
},2000);
}
});代码>
#微调器{
显示:无;
宽度:10px;
高度:10px;
动画:旋转2s线性无限;
}
@关键帧旋转{
从{
变换:旋转(0度);
}
到{
变换:旋转(360度);
}
}
0
您可以通过向页面呈现“静态”gif,并让脚本用AJAX调用的结果替换div的内容来完成此操作。
这将有效地显示一个“加载”图标,直到加载结果,但是如果脚本中出现错误,gif将永远旋转
<div id="chart_score" style="width: 100%; height: 300px;">
<div style="text-align: center; height: 100%;">
<br />
<br />
<br />
<img src="../../Img/GIF/CircleLoader.gif" />
<br />
<br />
Loading chart...
</div>
</div>
装载图表。。。
您可以通过向页面呈现“静态”gif,并让脚本用AJAX调用的结果替换div的内容来实现这一点。
这将有效地显示一个“加载”图标,直到加载结果,但是如果脚本中出现错误,gif将永远旋转
<div id="chart_score" style="width: 100%; height: 300px;">
<div style="text-align: center; height: 100%;">
<br />
<br />
<br />
<img src="../../Img/GIF/CircleLoader.gif" />
<br />
<br />
Loading chart...
</div>
</div>
装载图表。。。
Jquery有一些ajax事件处理程序。你可以用
$( document ).ajaxStart(function() {
$( "#loading" ).show();
});
发送请求时显示正在加载的图像,以及
$( document ).ajaxComplete(function() {
$( "#loading" ).hide();
});
在请求完成时隐藏加载图像
REF:andJquery有一些ajax事件处理程序。你可以用
$( document ).ajaxStart(function() {
$( "#loading" ).show();
});
发送请求时显示正在加载的图像,以及
$( document ).ajaxComplete(function() {
$( "#loading" ).hide();
});
在请求完成时隐藏加载图像
REF:和您可以在发送之前使用AJAX成功
错误
或完成
功能。或者,您可以在AJAX调用之前简单地显示一个微调器,并根据需要将其隐藏在success
或error
或complete
函数中
示例代码:
$('.spinner-div').show();
$.ajax({
//You AJAX function
success: function(){
$('.spinner-div').hide();
//Show success message
},
error : function(){
$('.spinner-div').hide();
//Show error message
}
});
您可以在发送前使用AJAX成功
错误
或完成
功能。或者,您可以在AJAX调用之前简单地显示一个微调器,并根据需要将其隐藏在success
或error
或complete
函数中
示例代码:
$('.spinner-div').show();
$.ajax({
//You AJAX function
success: function(){
$('.spinner-div').hide();
//Show success message
},
error : function(){
$('.spinner-div').hide();
//Show error message
}
});
添加到上述解决方案(我已经有了,但没有成功):
我在ajax调用中使用了async:false,
,该调用是从某个示例复制的,这当然会破坏同步的前端微调器更新。当你考虑它的时候,这是一个不需要动脑筋的问题,但是在上面的例子中没有明确地显示出来
因此,async:true
最终修复了它。添加到上面的解决方案中(我已经有了,但没有成功):
我在ajax调用中使用了async:false,
,该调用是从某个示例复制的,这当然会破坏同步的前端微调器更新。当你考虑它的时候,这是一个不需要动脑筋的问题,但是在上面的例子中没有明确地显示出来
所以,async:true
最终修复了它