gpt4 book ai didi

javascript - 强制发布请求在新页面加载之前完成提交

转载 作者:行者123 更新时间:2023-11-30 18:27:47 26 4
gpt4 key购买 nike

每当单击某个元素时,我正在尝试使用 jQuery $.post 方法向 PHP 脚本提交 ajax 请求。我不关心服务器返回的值 - 我只想确保我的数据已提交。

但是,接收点击的元素可以包含超链接图像或带有多个链接的 flash 元素。即使用户导航离开页面,我如何确保我的脚本收到发布请求(同样,我不关心它的响应)?我正在使用下面的代码:

jQuery(document).ready(function($) {
$(".click-track").mousedown(function(e) { // click() will not pass through a flash movie, so we must use mousedown
ad_id = $(this).data("ad-id");
var data = {
action: 'log_click',
adId: ad_id
};
$.ajaxSetup({async: false});
$.post(myscript.php, data, function(data) {
// Do nothing because we don't care about the response
}, 'html');
});
});

我不是浏览器脚本专家,这段代码让我感到困惑。如果您能提供任何帮助,我将不胜感激!

最佳答案

如果您在 mousedown 处理程序中执行 e.preventDefault(),您可以简单地在 $.post 调用中执行此操作:

$(".click-track").mousedown(function(e) { // click() will not pass through a flash movie, so we must use mousedown
e.preventDefault();
ad_id = $(this).data("ad-id");
var data = {
action: 'log_click',
adId: ad_id
};
$.ajaxSetup({async: false});
var jqxhr = $.post(myscript.php, data, function(data) {
// Do nothing because we don't care about the response

}, 'html');
jqxhr.complete(function(){ $(this).trigger('click'); });
});

这应该创建一个 ajax 对象并在 POST 请求完成时附加一个函数,该函数应该触发对最初 mousedown 元素的点击。我已经将它用于非 Flash 元素,不确定它是否适用于 Flash 对象,但它应该可以。

关于javascript - 强制发布请求在新页面加载之前完成提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10390915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com