访问sendBeacon发送的数据

时间:2015-10-11 05:51:02

标签: javascript php

文档指示sendBeacon通过HTTP POST request发送数据, 但在PHP中,$_POST变量似乎是一个空数组。

以下是我的javascript代码:navigator.sendBeacon('beacon_log.php','My lost data')

我做错了什么?

更新:

发现如果我使用 navigator.sendBeacon('beacon_log.php?g_data=My data ok','Still lost!') 我可以使用$_GET访问gdata为什么会在$_SERVER['REQUEST_METHOD']=POST

时访问

3 个答案:

答案 0 :(得分:4)

这是我的操作方法:

前端:在我的.js文件中:

window.onbeforeunload = () => {
  navigator.sendBeacon('php/record-stats.php', JSON.stringify(stats));
}

后端:在我的PHP文件中

$rawValue = file_get_contents('php://input');
$data = json_decode($request);

找到它的过程很繁琐,我当时找不到任何文档...

答案 1 :(得分:1)

来自navigator.sendBeacon的数据可在$HTTP_RAW_POST_DATA

中找到

答案 2 :(得分:0)

为了在PHP中获得print_r($_POST,1);,必须对HTTP POST请求的数据进行格式化

window.onpagehide = function(event)
{
 var fd = new FormData(); 
 fd.append('ajax', 'beacon'); 
 fd.append('name', 'John'); 
 navigator.sendBeacon(path+'/beacon/', fd);
}

这将为PHP中的print_r($_POST,1);带来所需的结果。

另外...