gpt4 book ai didi

单击链接时,javascript 即发即忘 - 异步 ajax

转载 作者:行者123 更新时间:2023-12-03 11:24:29 26 4
gpt4 key购买 nike

我们正在数据库中存储事件。事件可以是页面点击和保存/更新等。从 Controller 操作内部,这一切发生得很漂亮。

我有 3 个链接,当单击这些链接时,我想在数据库中存储一个事件。我不想让用户执行通用操作来存储事件,然后执行response.redirect,而是想在幕后通过 jquery/ajax 来执行此操作。现在,当用户单击链接时,应该发生两件事

  1. ajax 请求将创建一个事件
  2. 用户被带到预期页面。

我只希望用户单击链接,然后用户就可以到达预期的页面。 当代码等待远程操作的响应时,后台处理不应让用户在页面上再等待一两秒。我是否需要等待 ajax 请求完成,或者只是在我的 jquery 操作中添加“return true”?由于用户将被带到下一页,我的ajax请求会变坏或停止吗?在 firebug 中,我看到当用户在 ajax 请求完成之前单击页面上的某些链接时,ajax 进程会中止。我怎样才能最好地做这样的事情?

示例代码:

$(document).ready(function() {
$("a[custom-event]").on('click', function () {
var label = $(this).attr("custom-event");
var value = $(this).attr("custom-event-value");

DoSomeAjaxProcessing('event', 'click', label, value); //don't want this to go bad if redirection happens immediately

return true; //return true so that the browser can send the user to the href location
});
});

更新1:

这样的东西会为我飞吗?我也要去测试和更新。

$(document).ready(function() {
$("a[custom-event]").on('click', function () {
var label = $(this).attr("custom-event");
var value = $(this).attr("custom-event-value");

(new Image).src = someurl+"?label="+label+"&value="+value+"&type=event&action=click";

return true; //return true so that the browser can send the user to the href location
});
});

最佳答案

如果您尝试使用服务器记录事件,则需要支付一些费用。您无法异步调用服务器来记录事件并同时提供该链接的目标。

正如您所提议的,您提议的两条路径都不能令人满意:

  1. 使对事件日志记录路由的 AJAX 调用同步,并且仅在日志记录完成后将用户带到目的地。这会导致用户到达目的地时出现延迟。
  2. 提供通用路线,将用户重定向到正确的路线并记录正确的事件。这可能会破坏网址方案并通过单一路由汇集大量流量。

在 Stack 中,我们还使用“事件”来跟踪用户操作,但我们主要可以在目的地的 Controller 级别上进行操作。

例如,如果您有一个结帐流程,将用户从 /home 路由带到 /login 路由,我们将在开始时跟踪该事件为 /login View 提供服务的 Controller 。

[Route("/login")]
public virtual ActionResult Login()
{
// Tracking code here, probably passing in the referrer
return View();
}

关于单击链接时,javascript 即发即忘 - 异步 ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26983113/

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