如何在Javascript中没有XMLHttpRequest的情况下将数据发送到服务器?

时间:2015-11-17 15:17:13

标签: javascript ajax html5 browser

我已经读过,除了使用ajax(或fetch)之外,还有一些其他方法可以将少量数据(主要是跟踪信息)发送到服务器。它省略了服务器的响应。浏览器有机会异步发送,不会延迟卸载或影响下一个导航的性能

我认为它类似于navigator.theMethod(url, data);

有人知道我在说什么吗?

2 个答案:

答案 0 :(得分:1)

您可以在iframe中打开一些网址,或将此网址设置为图片来源 例如:

var image = document.createElement( 'img' ),
    iframe = document.createElement( 'iframe' );

image.src = '/some/url?with=parameters';
iframe.src = '/some/url?with=parameters';

但您没有收到任何响应数据

答案 1 :(得分:0)

我找到了答案。该方法称为navigator.sendBeacon()

旧方法是使用同步XMLHttpRequest或在卸载处理程序中加载图像来向服务器提交数据。这导致页面的卸载被延迟。

  

使用sendBeacon()方法,当用户代理有机会这样做时,数据将异步传输到Web服务器,而不会延迟卸载或影响下一个导航的性能。

以下是最小的样本用法:

window.addEventListener('unload', logData, false);

function logData() {
    navigator.sendBeacon("/log", analyticsData);
}

这是关于它的MDN article