如果退出网页,如何返回ajax请求

时间:2017-08-14 09:23:29

标签: php ajax

我如何回到ajax请求?例如我进入网页,启动ajax请求和进度条移动forwarde,例如我退出此页面并返回那里,如何返回活动/启动ajax请求?如何不再启动此功能,但如果正在运行回到此请求。

那是我的ajax代码:

<script>
    jQuery(document).ready(function($) {


                setTimeout(getProgress,100);
              $('.stan').text('Pobieram analizę...');
              $.urlParam = function(name){
             var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
                            if (results==null){
                               return null;
                            }
                            else{
                               return decodeURI(results[1]) || 0;
                            }
                                    }
        var id = $.urlParam('id');
        var idt = $.urlParam('idt');

                  $.ajax({
                                 url: "views/getresults.php?id="+id+"&idt="+idt,

                    success: function(data) {
                        $("#loadresults").append(data);
                    }
                });
                setTimeout(getProgress,100);

            return false;


            function getProgress(){

                $.ajax({

                    url: 'views/listen.php',
                    cache: false,
                   success: function(data) {
                        if(data<= 95 && data >= 0){
                            console.log(data);
                            $('#loadresults').html(data);
                            $('#progress').attr('aria-valuenow', data);
                            $('#progress').css('width', data + "%");  
                            $('#progress').text(data + "%");    

                            setTimeout(getProgress,1000);
                            console.log('Repeat');

                        }
                         else {
                            $('#progress').attr('aria-valuenow', 100);
                            $('#progress').css('width', 100 + "%");  

                            $('#progress').text(100 + "%");    

                            $('.stan').text('Dane zostały pobrane');
                                                                    setTimeout(function(){
                                        document.getElementById('progress').style.visibility = "hidden";
                                        },1000);
                         setTimeout(function(){
                                        document.getElementById('stan').style.visibility = "hidden";
                                        },1200);


                            console.log('End');
                        }
                    }
                });
            }

        });
        </script>

1 个答案:

答案 0 :(得分:0)

你所要求的在技术上是不可能的。

如果您退出网页(通过离开网页或关闭浏览器),页面上的所有内容都将被销毁。下次去那里时,浏览器会再次从服务器(或可能从缓存中)重新加载页面,然后重新开始。这是因为导航到浏览器中的URL会向服务器发出全新的HTTP请求。没有“先前的”ajax请求这样的东西。一旦你第一次离开页面,它就像它从未存在过。该页面的先前副本上的代码或内容都不存在。

网络无状态。这是您应该注意的关键概念。这意味着从一个请求到下一个请求都不会保留任何内容。应用程序保持状态的方式是采取主动措施来使用cookie,服务器端会话,数据库等来提供持久存储。但你不能做任何相当于复活正在进行的ajax请求的事情,该请求是通过关闭其主页来孤立的。

您唯一的解决方法是保持页面打开。如果用户想要通过使用该页面上的链接或按钮导航到另一个页面,则应确保它在另一个选项卡/窗口中打开该链接。当然,如果用户采取独立行动(例如在浏览器中输入新地址,使用后退/前进按钮),则无法阻止它们。