Javascript 带间隔的简单ajax请求

Javascript 带间隔的简单ajax请求,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我最近开始学习Ajax和jQuery。所以昨天我开始为一个公式编写一个简单的ajax请求,它向php脚本发送一个选择列表值,并从数据库中读取一些内容 到目前为止还有效! 但问题是,当我点击send按钮时,它会在1秒后启动请求。我知道这和我的间歇时间有关。当我点击发送按钮时,我启动请求,它每秒钟都会请求,这样我就有机会自动刷新新的收入条目 但是我希望每隔一秒钟就有一次间隔周期,但是当我第一次按下按钮时,它应该立即加载,而不仅仅是1秒之后 这是我的密码: 谢谢 我可能就是你要找的人 $(docum

我最近开始学习Ajax和jQuery。所以昨天我开始为一个公式编写一个简单的ajax请求,它向php脚本发送一个选择列表值,并从数据库中读取一些内容

到目前为止还有效! 但问题是,当我点击send按钮时,它会在1秒后启动请求。我知道这和我的间歇时间有关。当我点击发送按钮时,我启动请求,它每秒钟都会请求,这样我就有机会自动刷新新的收入条目

但是我希望每隔一秒钟就有一次间隔周期,但是当我第一次按下按钮时,它应该立即加载,而不仅仅是1秒之后

这是我的密码:


谢谢

我可能就是你要找的人

$(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;
    }
});