JQuery'afterunload'事件没有在PHP中将来自$ .post的响应调用到mail.log

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JQuery'afterunload'事件没有在PHP中将来自$ .post的响应调用到mail.log相关的知识,希望对你有一定的参考价值。

我一直试图在用户试图退出页面时发送电子邮件,我在jQuery中使用了beforeunload事件。

jQuery代码:

 $(window).on("beforeunload", function(e) {
     console.log('posting');
     $.post("file.php", {
             d: logData,
             s: 'New User Activity',
             t: 'example@gmail.com',
             r: 'From: info@address.com
',
      },
      function(data, status) {
        console.log(data);
      );
 });

这段代码总是成功记录来自file.php的响应,除非我使用mail()函数,顺便说一句,它只是在mail()函数后没有console.log

file.php contents:

<?php
$fo = fopen("file.txt","a");
fwrite($fo,"Contents:
".$_POST['d']."
Subject: ".$_POST['s']."
To:".$_POST['t']);
fclose($fo); // THIS WORKS SUCCESSFULLY

mail("example@domain.com","Subject","Msg"); //I changed this to static values so i check if the problem
//is coming from the POST, but still no success

echo "fine"; //THIS DOESN'T SHOW UP IN THE CONSOLE
?>
答案

this answer

基本上,beforeunload中的任何异步都可能无法执行,具体取决于浏览器实际卸载页面的时间。

通过将async: false传递给您的调用(docs here),尝试在您的情况下使用同步请求。

以上是关于JQuery'afterunload'事件没有在PHP中将来自$ .post的响应调用到mail.log的主要内容,如果未能解决你的问题,请参考以下文章

jquery easyui1.3.4版本,怎么在点击输入框的时候就弹出下拉列表???

这样用jquery截取字符串,得到特定字符

Jquery 赋值到CheckBox里

jquery 怎么设置cookie

JQuery之选择器

jQuery学习手册(15)