如何记录链接点击,使表单提交

本文关键字:表单提交 链接 何记录 记录 | 更新日期: 2023-09-27 18:36:53

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

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

我的代码 :

HtmlGenericControl a = new HtmlGenericControl("a");
a.Attributes["onclick"] = "$('#" + frm.ClientID + "').submit();";
a.InnerText = "site " + dt_list.ElementAtOrDefault(0).Field<string>("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 中使用以太引用,以太使登录代码隐藏,以太我在 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});  
}