Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 每隔1秒重试Ajax请求5次_Php_Jquery_Ajax - Fatal编程技术网

Php 每隔1秒重试Ajax请求5次

Php 每隔1秒重试Ajax请求5次,php,jquery,ajax,Php,Jquery,Ajax,我有一个verify.php文件,它将检查数据库条目,如果它存在,则返回1;如果它不存在,则返回0。但此数据库将在0到5秒之间更新。因此,至少在前5秒钟,返回值可能为0 在另一个页面中,我想用AJAX检查verify.php的返回,并在每次检查之间间隔1秒重试5次。如果在5秒钟检查中的任何时候,它收到1,则退出检查循环并显示成功消息 我写过这篇文章,但它只检查一次,我不知道如何让它检查x次: <p id="status"></p> <script type="tex

我有一个verify.php文件,它将检查数据库条目,如果它存在,则返回1;如果它不存在,则返回0。但此数据库将在0到5秒之间更新。因此,至少在前5秒钟,返回值可能为0

在另一个页面中,我想用AJAX检查verify.php的返回,并在每次检查之间间隔1秒重试5次。如果在5秒钟检查中的任何时候,它收到1,则退出检查循环并显示成功消息

我写过这篇文章,但它只检查一次,我不知道如何让它检查x次:

<p id="status"></p>
<script type="text/javascript">
var url = 'verify.php';
$('#status').text('Please wait...');

$(document).ready(function(){
$.ajax({
    type: 'POST',
    url:url,
    success: function(msg){
        if (msg == 1){
            $('#status').text('success');
        }else{
            $('#status').text('failed');
        }
    }
});
});
</script>

var url='verify.php'; $('#status').text('请稍候…'); $(文档).ready(函数(){ $.ajax({ 键入:“POST”, url:url, 成功:功能(msg){ 如果(msg==1){ $('状态').text('成功'); }否则{ $('状态').text('失败'); } } }); });

非常感谢您的帮助。谢谢。

不用为您编写代码,这里有一个“暴力”方法

将ajax调用包装到函数中 在该函数外声明一个“can stop”和一个名为times的变量 每次调用函数时,递增调用变量的次数 在ajax响应代码中设置“can stop”变量

创建一个看起来递归的函数; 它检查“can stop”变量,并在设置后退出 它调用ajax函数 它检查名为variable的时间,并在计数通过时执行bail 它调用setTimeout来调用自己


使用window.setTimeout(或ajax包装器)等待一秒钟,而不为您编写代码,下面是一种“暴力”方法

将ajax调用包装到函数中 在该函数外声明一个“can stop”和一个名为times的变量 每次调用函数时,递增调用变量的次数 在ajax响应代码中设置“can stop”变量

创建一个看起来递归的函数; 它检查“can stop”变量,并在设置后退出 它调用ajax函数 它检查名为variable的时间,并在计数通过时执行bail 它调用setTimeout来调用自己

使用window.setTimeout(或其ajax包装器)等待一秒钟
  • 将AJAX调用转化为函数
  • 有一个变量跟踪您的尝试次数
  • 如果需要的话,在自己的回调中调用AJAX函数,延迟一秒钟,也就是说,您还没有尝试完,并且您的状态是错误的
  • 代码

    • 将AJAX调用转化为函数
    • 有一个变量跟踪您的尝试次数
    • 如果需要的话,在自己的回调中调用AJAX函数,延迟一秒钟,也就是说,您还没有尝试完,并且您的状态是错误的
    代码


    使用
    window.setInterval(function,timeInMillis)
    函数为ajax查询计时。使用布尔值检查特定查询何时返回

    只有当它返回时,计时器才应该进行新的查询

    祝你一切顺利

      <script type="text/javascript">
          var queryOn = false;
           var interval;
    $(function (){
    
        var attempts = 0;
        interval = window.setInterval(
                        function () {
                            if (queryOn === false) {
                                queryOn = true;
    
    
                                var url = "...url";
    
                                $.ajax({
                                    type: 'POST',
                                    url: url,
                                    success: function (msg) {
    
                                        queryOn = false;
                                        if (msg === 1) {
                                            $('#status').text('success');
                                            window.clearInterval(interval);
                                        } else {
                                            $('#status').text('failed');
                                        }
    
    
                                        if(attempts === 5){
                                             window.clearInterval(interval);
                                        }
                                        ++attempts;
                                    }
                                });
                            }
                        }, 5000);
    
    });
    
    
    
    
    
            </script>
    
    
    var queryOn=false;
    var区间;
    $(函数(){
    var=0;
    interval=window.setInterval(
    函数(){
    if(queryOn==false){
    queryOn=true;
    var url=“…url”;
    $.ajax({
    键入:“POST”,
    url:url,
    成功:功能(msg){
    queryOn=false;
    如果(msg==1){
    $('状态').text('成功');
    窗口。清除间隔(间隔);
    }否则{
    $('状态').text('失败');
    }
    如果(尝试次数===5){
    窗口。清除间隔(间隔);
    }
    ++企图;
    }
    });
    }
    }, 5000);
    });
    
    使用
    窗口.setInterval(函数,timeInMillis)
    函数为ajax查询计时。使用布尔值检查特定查询何时返回

    只有当它返回时,计时器才应该进行新的查询

    祝你一切顺利

      <script type="text/javascript">
          var queryOn = false;
           var interval;
    $(function (){
    
        var attempts = 0;
        interval = window.setInterval(
                        function () {
                            if (queryOn === false) {
                                queryOn = true;
    
    
                                var url = "...url";
    
                                $.ajax({
                                    type: 'POST',
                                    url: url,
                                    success: function (msg) {
    
                                        queryOn = false;
                                        if (msg === 1) {
                                            $('#status').text('success');
                                            window.clearInterval(interval);
                                        } else {
                                            $('#status').text('failed');
                                        }
    
    
                                        if(attempts === 5){
                                             window.clearInterval(interval);
                                        }
                                        ++attempts;
                                    }
                                });
                            }
                        }, 5000);
    
    });
    
    
    
    
    
            </script>
    
    
    var queryOn=false;
    var区间;
    $(函数(){
    var=0;
    interval=window.setInterval(
    函数(){
    if(queryOn==false){
    queryOn=true;
    var url=“…url”;
    $.ajax({
    键入:“POST”,
    url:url,
    成功:功能(msg){
    queryOn=false;
    如果(msg==1){
    $('状态').text('成功');
    窗口。清除间隔(间隔);
    }否则{
    $('状态').text('失败');
    }
    如果(尝试次数===5){
    窗口。清除间隔(间隔);
    }
    ++企图;
    }
    });
    }
    }, 5000);
    });