Javascript函数使用后面的代码调用onPageLoad而不是onClick

时间:2011-04-13 15:02:59

标签: javascript

我有一个HTML按钮,onClick应该调用两个函数:

<input id="btnLogout" onclick="test();SaveAndNavigate('logoff.aspx');" type="button">

在函数test()中,我只需要在.txt文件(在服务器端)写入/追加用户名。 txt文件是一个日志文件,我希望在当前用户注销时跟踪。

功能测试是:

function test()
{
<%
   LogUserSession("User: "+ System.Web.HttpContext.Current.ApplicationInstance.Session.SessionID.CurrentUser +" logged out on: " + System.DateTime.Now );
%> 
}

当我使用按钮加载页面时,该功能会立即在pageload而不是onClick事件上执行。 由于我需要实现的所有功能都是由codeBehind函数“LogUserSession”实现的,所以我希望尽可能避免开发jQuery Ajax Web服务或其他解决方案。

否则如何将文本信息附加到javascript中的现有.txt文件中? 提前谢谢。

4 个答案:

答案 0 :(得分:0)

如果我理解正确的话,那就是你想要运行的服务器端功能。从客户端但由于服务器在将代码发送到浏览器之前解析代码,因此它在页面到达浏览器之前发生。我认为ajax是你最好的选择。

答案 1 :(得分:0)

&lt; %%&gt;之间的代码在生成页面时在服务器上运行。这实际上是在浏览器事件获取页面之前发生的。

我建议您将注销的loggin移动到“logoff.aspx”页面。这种方式永远不会忘记。

答案 2 :(得分:0)

这样做的一种方法是(未经验证):

1)有一个名为Logout.aspx的页面,并在页面加载事件中调用/实现LogUserSession方法的功能。

2)在页面上添加一个宽度= 0和高度= 0

的img元素

3)在测试javascript函数中,将img的src属性分配给Logout.aspx。

即:

<img id="logoutImg" width=0 height=0 style="display:none"/>
.
.
.
function test(){
 document.getElementById("logoutImg").src = ("Logout.aspx?_rnd" + new Date());
}

答案 3 :(得分:0)

您的LogUserSession()是一个服务器端函数,在您的页面(包含您提供的数据提取)生成时 - 在服务器端生成。它不是作为页面的onPageLoad事件的一部分执行它(即在客户端)。

基本上你想要的是从logoff.aspx调用LogUserSession()函数。

如果您的SaveAndNavigate()函数有效,那么这应该是您在btnLogout中所需的全部内容。如果您不想使用AJAX进行调用,则需要提交一个提交到logoff.aspx的表单。如果它处理GET请求,甚至只是它的链接。