Javascript 带间隔的简单ajax请求
我最近开始学习Ajax和jQuery。所以昨天我开始为一个公式编写一个简单的ajax请求,它向php脚本发送一个选择列表值,并从数据库中读取一些内容 到目前为止还有效! 但问题是,当我点击send按钮时,它会在1秒后启动请求。我知道这和我的间歇时间有关。当我点击发送按钮时,我启动请求,它每秒钟都会请求,这样我就有机会自动刷新新的收入条目 但是我希望每隔一秒钟就有一次间隔周期,但是当我第一次按下按钮时,它应该立即加载,而不仅仅是1秒之后 这是我的密码:Javascript 带间隔的简单ajax请求,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我最近开始学习Ajax和jQuery。所以昨天我开始为一个公式编写一个简单的ajax请求,它向php脚本发送一个选择列表值,并从数据库中读取一些内容 到目前为止还有效! 但问题是,当我点击send按钮时,它会在1秒后启动请求。我知道这和我的间歇时间有关。当我点击发送按钮时,我启动请求,它每秒钟都会请求,这样我就有机会自动刷新新的收入条目 但是我希望每隔一秒钟就有一次间隔周期,但是当我第一次按下按钮时,它应该立即加载,而不仅仅是1秒之后 这是我的密码: 谢谢 我可能就是你要找的人 $(docum
谢谢 我可能就是你要找的人
$(document).ready(function () {
var isFirstTime = true;
function sendForm() {
var url = "tbladen.php";
var data = $("#form1").serialize();
$.ajax({
type: "POST",
url: url,
data: data,
success: function (data) {
$("#tbladen").html(data);
}
});
}
$("#form1").submit(function () {
if (isFirstTime) {
sendForm();
isFirstTime = false;
} else {
setTimeout(function () {
sendForm();
}, 1000);
}
return false;
});
});
因此,当回调结束时,使用
setTimeout
,因为无论回调是否结束,setInterval都会继续运行
$(function () {
$("#form1").submit(postData);
function postData() {
var url = "tbladen.php",
data = $("#form1").serialize();
$.ajax({
type: "POST",
url: url,
data: data,
success: function (data) {
$("#tbladen").html(data);
setTimeout(postData, 1000);
}
});
return false;
}
});
类似于请在此处发布您的代码,以便为将来的so访问者保留。另外,请注意,
setTimeout
比setInterval
更适合Ajax轮询,后者无法正确处理请求所需时间超过间隔本身的情况。@D4V1D,我想你的意思是使用ajax时,setTimeout
比setInterval
好。说得好setTimeout
应该只在ajax调用完成时调用。@KJPrice是的,在写我的评论时搞砸了。我已经正确地编辑了它。setTimeout
在您的ajax
回调中是一种方法。谢谢,您的版本可以工作:)。但有一件事:在您的版本中,我如何避免多次按submit按钮来添加新请求?因为在我的基本版本中,我使用了“if(interval==0){….}”来避免它,所以我不会让服务器崩溃。我也试图在你的代码中使用它,但我的结果是,它整体停止,不再刷新
$(function () {
$("#form1").submit(postData);
function postData() {
var url = "tbladen.php",
data = $("#form1").serialize();
$.ajax({
type: "POST",
url: url,
data: data,
success: function (data) {
$("#tbladen").html(data);
setTimeout(postData, 1000);
}
});
return false;
}
});