JQuery 'beforeunload' 事件没有 console.log 从 $.post 到 PHP 中的 mail() 的响应
JQuery 'beforeunload' event doesn't console.log the response from $.post to mail() in PHP
我一直在尝试在用户试图退出页面时发送电子邮件,我在 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\r\n',
},
function(data, status) {
console.log(data);
);
});
此代码总是成功记录来自 file.php
的响应,除非我使用 mail() 函数,顺便说一句,它只是 console.log
在 mail() 函数之后没有任何内容。
file.php内容:
<?php
$fo = fopen("file.txt","a");
fwrite($fo,"Contents:\n".$_POST['d']."\nSubject: ".$_POST['s']."\nTo:".$_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 中使用了 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\r\n',
},
function(data, status) {
console.log(data);
);
});
此代码总是成功记录来自 file.php
的响应,除非我使用 mail() 函数,顺便说一句,它只是 console.log
在 mail() 函数之后没有任何内容。
file.php内容:
<?php
$fo = fopen("file.txt","a");
fwrite($fo,"Contents:\n".$_POST['d']."\nSubject: ".$_POST['s']."\nTo:".$_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),尝试在您的情况下使用同步请求。