我们正在我们的数据库中存储事件。事件可以是页面命中和保存/更新等。从控制器操作内部,这发生得非常漂亮。
我有3个链接,当点击这些链接时,我想在db中存储一个事件。而不是让用户进行通用操作来存储事件然后执行response.redirect,我想通过幕后的jquery / ajax来做这件事。现在,当用户点击链接时,应该发生两件事
我只想让用户点击链接,用户就可以到达目标页面了。 幕后处理不应该让用户在页面上再停留一两秒,而代码正在等待远程操作的响应。我是否需要等待ajax请求完成或者只是放置"返回true"在我的jquery行动?由于用户将被带到下一页,我的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
});
});
答案 0 :(得分:1)
如果您尝试使用服务器录制活动,则必须承担一定的费用。您不能异步调用服务器来记录事件,也可以同时为该链接提供目标。
如你所说,你提出的两条路径并不令人满意:
在Stack,我们还使用" events"跟踪用户操作,但我们可以在目的地的控制器级别上进行跟踪。
例如,如果您有一个结帐流程,将用户从/home
路由转到/login
路由,我们会在为{{1}提供服务的控制器的开头跟踪该事件查看。
/login