Php 发送其他请求时的Ajax轮询在safari上不起作用
我在一个网站上有一个页面,在那里你可以下载你以前付费购买的文件。该文件是包含许多pdf文件的zip存档。 单击下载链接时,会调用一个php文件,该文件在提供文件之前会执行一些工作(在pdf上添加戳记)。 因为在较大的文件上这可能需要一些时间,所以我将构建一个轮询机制,向用户显示正在发生的事情。 轮询是通过如下所示的ajax调用完成的:Php 发送其他请求时的Ajax轮询在safari上不起作用,php,jquery,download,safari,ajax-polling,Php,Jquery,Download,Safari,Ajax Polling,我在一个网站上有一个页面,在那里你可以下载你以前付费购买的文件。该文件是包含许多pdf文件的zip存档。 单击下载链接时,会调用一个php文件,该文件在提供文件之前会执行一些工作(在pdf上添加戳记)。 因为在较大的文件上这可能需要一些时间,所以我将构建一个轮询机制,向用户显示正在发生的事情。 轮询是通过如下所示的ajax调用完成的: $('.rm-table').on(clickhandler,'.fa-download', function(e){ tr = $(this).clo
$('.rm-table').on(clickhandler,'.fa-download', function(e){
tr = $(this).closest('tr');
id = tr.attr('id');
tr.find("progress").show();
tr.find('.downloadstatus').show();
tr.find('.downloadstatus').html('Start Download...');
setTimeout(getDownloadStatus(), 250);
});
function getDownloadStatus(){
setTimeout( function() {
$.ajax({
url: '/process/{{Auth::id()}}/'+id,
type: 'POST',
async: true,
cache: false,
data: {},
dataType: "json",
success: function(data, textStatus, jqXHR)
{
var tekst = data.tekst;
var perc = data.percentage;
tr.find('.downloadstatus').html(tekst);
tr.find('progress').val(perc);
if(tekst != 'done'){
getDownloadStatus();
} else {
tr.find('.downloadstatus').html("Done!");
tr.find('progress').val(100);
setTimeout(
function()
{
tr.find('progress').val(0);
tr.find('progress').hide();
tr.find('.downloadstatus').html("");
tr.find('.downloadstatus').hide();
}, 750);
}
},
error: function(jqXHR, textStatus, errorThrown) {
var response = jQuery.parseJSON(jqXHR.responseText);
alert(response.error);
}
});
}, 250);
}
轮询在用户单击链接后完成。因此,不会阻止链接的默认行为
这在Windows上的所有浏览器上都能正常工作,但在mac上的Safari上,甚至ipad上的其他浏览器上,都无法启动轮询。有人知道问题出在哪里吗?好的,问题是Safari与windows上的浏览器不同,在单击链接时似乎会停止页面上的所有javascript活动。因此,当“其他页面”仍在加载时,无论是重定向还是下载,ajax轮询都是不可能的。
我也通过ajax请求文件来解决这个问题。如果javascript不可用,仍然允许回退。这一行中的clickhandler是什么
$('.rm table')。在(clickhandler,.fa download',函数(e){
?var clickhandler=('ontouchstart'在document.documentElement?“touchstart”中):“单击”);为了检测点击或触摸,您是否尝试了XMLHttpRequest
中提供的onprogress
事件?我没有,但似乎需要调用zip文件来通过javascript。我更希望调用文件本身不需要javascript。因此我希望有另一种解决方案。我不过我会看看的。