首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript并忘记了单击链接的时间-异步ajax

javascript并忘记了单击链接的时间-异步ajax
EN

Stack Overflow用户
提问于 2014-11-17 22:24:08
回答 1查看 1.2K关注 0票数 0

我们正在数据库中存储事件。一个事件可能是一个页面命中和保存/更新等。从内部控制器动作,这是美丽的发生。

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

  1. ajax请求将创建一个事件
  2. 用户转到预定的页面。

我只想让用户点击链接,然后用户进入预定的页面。幕后处理不应该让用户在页面上停留一两秒钟,而代码正在等待来自远程操作的响应。我是否需要等待ajax请求的完成,还是只需在jquery操作中添加“返回真”?由于用户将被带到下一页,我的ajax请求是坏的还是停止的?在firebug中,当用户在ajax请求完成之前单击页面上的某个链接时,我看到ajax进程将中止。我怎么能做这样的事呢?

样本代码:

代码语言:javascript
复制
$(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:

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

代码语言:javascript
复制
$(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
                });
            });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-18 07:20:20

如果你试图用你的服务器记录一个事件,你将不得不付出一些代价。您不能异步地调用服务器来记录事件并同时为该链接提供目标服务。

正如你所建议的那样,你提出的两条道路是不能令人满意的:

  1. 对事件日志路由进行AJAX调用是同步的,并且只有在日志记录完成后才能将用户带到目的地。这会导致延迟将用户带到他们的目的地。
  2. 提供一个通用路由,将用户重定向到正确的路由并记录适当的事件。这可以打破url计划和漏斗的许多您的交通通过一个单一的路线。

在Stack,我们也使用"events“来跟踪用户的操作,但是我们可以在目标的控制器级别进行很大程度的跟踪。

例如,如果有一个签出流将用户从/home路由带到/login路由,我们将在为/login视图服务的控制器的开头跟踪该事件。

代码语言:javascript
复制
[Route("/login")]
public virtual ActionResult Login()
{
    // Tracking code here, probably passing in the referrer
    return View();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26983113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档