0

我正在尝试将sendBeacon方法附加到我的 Web 应用程序中的一个页面。我尝试request使用简单的AJAX方法和通过sendBeacon()方法发送。两者都给出不同的结果,没有一个是可用的。请建议。

html.php

<body>
    <button onclick="setzero();">
        click me
    </button>
    <script>
        function setzero(){
            var settings = {
            "url":"ttstt.php",
            "method":"POST",
            "data": JSON.stringify({"val":0})
            };
            $.ajax(settings).done(function(e){console.log(e);});
        }
      
        window.addEventListener("unload", function() {  
          navigator.sendBeacon("ttstt.php", JSON.stringify({"val":1}));
        });
    </script>
</body>

ttstt.php

$val = ($_POST);
print_r($val);

当我单击按钮时,html.php我得到以下结果。
!!请注意,完整的数组在关键部分。!!

Array
(
    [{"val":0}] => 
)

当我重新加载页面以启动 时sendBeacon(),我得到[]了结果。

4

1 回答 1

0

我刚刚在我的 PHP 代码中更改了以下内容

$val = file_get_contents("php://input");
$json = json_decode($val);
echo $json['val'];       //This gives output as 0, which I was looking for.

同样的代码也适用于 sendBeacon() 数据。

于 2020-10-13T08:09:44.050 回答