这太多了,它的工作原理如何,我在某些情况下使用它,我无法以其他方式使用它。
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 在后面生成登录代码,ether 我在 html 页面中包含一个空图像,使日志如下所示:ASP server stats for html pages
我尝试调用ajax,并以正确的方式进行提交,但失败了,ajax 被提交停止。下一种方法是使用超时,调用 ajax,并将超时设置为 500 毫秒以进行提交,但我避免了超时,因为我已经完成了 ajax 调用花费不到 100 毫秒。