我有一个遗留代码,它使用以下代码提交一些数据。
setTimeout(function ()
{
SubmitForm();
},
0);
上面的块在提交方法中。即使浏览器关闭,我也想执行此代码,因此我在 onbeforeunload 中调用相同的 Submit 方法,但它不执行 SubmitForm 函数。有什么见解吗?
我有一个遗留代码,它使用以下代码提交一些数据。
setTimeout(function ()
{
SubmitForm();
},
0);
上面的块在提交方法中。即使浏览器关闭,我也想执行此代码,因此我在 onbeforeunload 中调用相同的 Submit 方法,但它不执行 SubmitForm 函数。有什么见解吗?
你不能这样做。
如果浏览器关闭(或正在关闭),则无需等待表单发布通过。
关闭后,您无法在浏览器(或任何 JavaSrcipt VM)中运行 JavaScript 代码。
如果浏览器关闭,您将无法执行任何操作,因为您的代码无法运行。相反,您可以使用所谓的非异步 ajax 请求,而无需setTimeout
. 这可以使用jQuery 库轻松完成。
$(window).on('beforeunload',function(){
$.ajax({
method: "POST",
url: "[insert your php file path here]",
data: $('#myForm').serialize(),
async: false,
});
});
这将在浏览器关闭或用户离开您的网站之前运行。