如何记录提交表单的链接点击?

我想跟踪用户活动(日志数据)。 我在页面上有几个链接,通过特定方式提交表单。问题是:

我找不到合适的方法来处理click事件并以简单的方式将日志插入数据库。

我的代码:

HtmlGenericControl a = new HtmlGenericControl("a"); a.Attributes["onclick"] = "$('#" + frm.ClientID + "').submit();"; a.InnerText = "site " + dt_list.ElementAtOrDefault(0).Field("pro_name").TrimEnd(); inner_li_1.Controls.Add(a); 

现在我想处理提交提交的链接的点击事件?!!

这太多了,它的工作原理如何,我在某些情况下使用它,我不能用其他方式。

javascript调用,我先调用日志,然后继续提交。 当我点击时,我也会显示一条等待消息,事件发生得太快,用户不明白是等待什么。 我也注意避免使用简单的javascript对动作进行双重记录。 我在onclick事件上调用此函数。

 var confirmSubmited = false; function SubmitWithLog(me) { // to avoid many clicks... if(confirmSubmited) return false; confirmSubmited=true; jQuery.ajax({ url: "/LogAction.ashx", type: "GET", timeout: 3000, async: true, // you can try and async:false - maybe is better for you data: action=4, // here you send the log informations cache: false, success: function(html) { jQuery("#FormID").submit(); }, error: function(responseText, textStatus, XMLHttpRequest) { jQuery("#FormID").submit(); } }); return false; } 

处理程序是

 public class LogAction : IHttpHandler { public void ProcessRequest(HttpContext context) { // log here what you wish // end up with no content context.Response.TrySkipIisCustomErrors = true; context.Response.Status = "204 No Content"; context.Response.StatusCode = 204; } } 

我想清楚这不是记录用户操作的好方法,但是当你不能这样做时,这是一种方式。 我只使用它,当用户提交并离开我的网站并转到另一个网站时,我用它来编写这个动作。

在所有其他情况下,我在url中使用ether一个引用,ether make登录后面的代码,ether我在html页面中包含一个空图像,使日志像这样: html页面的ASP服务器统计信息

我试着调用ajax,并且正确的方式进行提交,但是它失败了,ajax停止提交。 下一种方法是使用超时,调用ajax,并设置超时500ms来进行提交,但我避免超时,因为ajax调用所需的时间少于100ms。

@Aristos – 为什么在这个世界中你会通过等待执行日志记录返回的Ajax调用来对用户体验产生负面影响,然后继续事件(点击,提交,等等……)? 日志记录是应用程序的一个非关键部分,用户体验不会根据其结果而发生变化。 这是一个“发送并忘记”类型的例程。 触发Ajax请求,将成功和失败例程留空,然后立即执行$ .ajax()之后的行提交; 呼叫。

那么,一些伪代码给你……

 function handleClick(e) { handleLoggingOnClick("something happened here"); myForm.submit(); } function handleLoggingOnClick(message) { $.ajax({url:"logging.do", data:"message="+message}); }