我如何回到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>
答案 0 :(得分:0)
你所要求的在技术上是不可能的。
如果您退出网页(通过离开网页或关闭浏览器),页面上的所有内容都将被销毁。下次去那里时,浏览器会再次从服务器(或可能从缓存中)重新加载页面,然后重新开始。这是因为导航到浏览器中的URL会向服务器发出全新的HTTP请求。没有“先前的”ajax请求这样的东西。一旦你第一次离开页面,它就像它从未存在过。该页面的先前副本上的代码或内容都不存在。
网络无状态。这是您应该注意的关键概念。这意味着从一个请求到下一个请求都不会保留任何内容。应用程序保持状态的方式是采取主动措施来使用cookie,服务器端会话,数据库等来提供持久存储。但你不能做任何相当于复活正在进行的ajax请求的事情,该请求是通过关闭其主页来孤立的。
您唯一的解决方法是保持页面打开。如果用户想要通过使用该页面上的链接或按钮导航到另一个页面,则应确保它在另一个选项卡/窗口中打开该链接。当然,如果用户采取独立行动(例如在浏览器中输入新地址,使用后退/前进按钮),则无法阻止它们。