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
?>
答案
基本上,beforeunload
中的任何异步都可能无法执行,具体取决于浏览器实际卸载页面的时间。
通过将async: false
传递给您的调用(docs here),尝试在您的情况下使用同步请求。
以上是关于JQuery'afterunload'事件没有在PHP中将来自$ .post的响应调用到mail.log的主要内容,如果未能解决你的问题,请参考以下文章