jquery - 在 Ajax 调用中更改 DIV 自动刷新的参数
问题描述
我在#DIV 中有一些内容正在通过 Jquery 刷新。我试图在进行 Ajax 调用后更改刷新间隔,然后在 Ajax 请求完成后更改间隔。
第一部分有效,即一旦 Ajax 进程启动,间隔开始每 2 秒刷新一次,但是一旦 Ajax 完成,#DIV 就会每 2 秒刷新一次,并且不会恢复到 60 秒成功。
这是代码:
<script>
$(function () {
$('form').on('submit', function (e) {
setInterval("my_function();",2000);
$('#loadingmessage').show();
e.preventDefault();
$.ajax({
type: 'post',
url: 'form.php',
data: $('form').serialize(),
success: function (data) {
$(".content").css("visibility", "visible");
$('#loadingmessage').hide();
$('#formt').trigger("reset");
setInterval("my_function();",60000);
},
error: function(data){
alert('error!');
}
});
});
});
</script>
这将设置页面加载时的初始间隔:
<script>
setInterval("my_function();",60000);
function my_function(){
$('#div').load(location.href + ' #div');
}
</script>
解决方案
您需要清除第一个间隔,然后创建新的,见下文
<script>
$(function () {
$('form').on('submit', function (e) {
var interval = setInterval("my_function();",2000);
$('#loadingmessage').show();
e.preventDefault();
$.ajax({
type: 'post',
url: 'form.php',
data: $('form').serialize(),
success: function (data) {
$(".content").css("visibility", "visible");
$('#loadingmessage').hide();
$('#formt').trigger("reset");
clearInterval(interval); // stop the interval
setInterval("my_function();",60000);
},
error: function(data){
alert('error!');
}
});
});
});
</script>
推荐阅读
- sql - 在请求执行期间启动了多少事务?
- asp.net-web-api - Web Api 从前面获取一个数组
- angular - 如何为 angular cli 生成的库设置自定义路径?
- java - 如何在 JavaFX 运行时将字符编码设置为 UTF-8
- angular - 我有一个具有相同值的数组需要删除所有其他值
- database - Laravel 8 - 为什么不在视图中获取数据
- node.js - 如何在 Nuxt 应用中部署整个 Wordpress 应用?
- python - 在终端中运行 Python 文件 - 在 VSCode 中 - 在命令前加上与号“&” - 它是什么?
- c++ - 基于模板类型的无输入参数的“重载”功能
- django - Django中的异步视图