当前位置: 代码迷 >> JavaScript >> 在firefox中,是在重定向之前删除的ajax调用
  详细解决方案

在firefox中,是在重定向之前删除的ajax调用

热度:97   发布时间:2023-06-13 12:21:03.0

首先,在Chrome浏览器中,此功能每次均可100%运行,而在Firefox中则无法100%运行。

在单击事件中,我只想使用ajax将数据提交到服务器以进行统计。 无需响应,它只应将数据提交到服务器。 提交ajax数据后,访问者应立即重定向到另一个页面。 在执行ajax回调或类似async = false之类的操作后,我无法进行重定向,因为计算需要花费时间,并且访问者不应等待秒。

我可以看到的唯一解决方案是使用setTimeout()作为Firefox的解决方法,因此ajax调用已成功提交,并在毫秒后重新定向。 是否存在此任务的首选记录值(以毫秒为单位)? 因此,它对于所有将来的Firefox版本都可以100%正常工作。

实际我只能猜测一个在我实际的Firefox版本中可以在我的PC上运行的值。 Firefox中可能对此有官方价值吗?

这可能是Firefox中的问题吗? 我完全可以理解async = true不会通过外部重定向提供回调。

但是我不需要回调,我只想使用ajax提交数据。 为什么Firefox会无声地杀死这些请求? 网络中没有任何痕迹。

感谢Jaromanda提供了sendBeacon的有用提示。

var fd = new FormData(); 
fd.append('var1', 123); 
fd.append('var2', 'text'); 
navigator.sendBeacon('ajax.php', fd);

在PHP中,您可以使用

$_POST['var1']

提示:在sendBeacon()之后具有重定向功能,例如

window.location.href = url;

其表示为“网络”标签状态为“待处理”,传输了0字节,并且此内容从未更改,但请求已成功提交。 没有重定向,它的HTTP状态200,所以有点奇怪。

  相关解决方案