【问题标题】:Javascript function using code behind called onPageLoad instead onClickJavascript 函数使用后面的代码调用 onPageLoad 而不是 onClick
【发布时间】:2011-04-13 23:16:51
【问题描述】:

我有一个 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 );
%> 
}

当我使用按钮加载页面时,该函数会在页面加载时立即执行,而不是 onClick 事件。 由于我需要实现的已经全部由codeBehind函数“LogUserSession”实现,如果可能的话,我希望避免开发jQuery Ajax Web服务或其他解决方案。

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

【问题讨论】:

  • 感谢您提供的信息,非常清楚:在将代码发送(一旦处理)到浏览器之前处理服务器功能。这就是为什么它会立即被解雇。我使用的是旧版软件,因此我只能访问客户端文件(.aspx、.ascx),因此无法编辑“SaveAndNavigate”功能。而且在调用Logoff.aspx的时候,Session已经被软件清空了,所以我再也拿不到用户名了。因此,我认为我必须实现一个简单的 Web 服务并使用 jQuery Ajax 访问它。感谢您的帮助!

标签: javascript


【解决方案1】:

您的 LogUserSession() 是一个服务器端函数,当您的页面(包含您提供的摘录)正在生成时 - 在服务器端执行。它没有将其作为页面的 onPageLoad 事件的一部分执行(即在客户端)。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      我建议您将注销的登录名移至“logoff.aspx”页面。这样就永远不会忘记。

      【讨论】:

        【解决方案4】:

        一种方法是(未验证):

        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());
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-16
          • 1970-01-01
          相关资源
          最近更新 更多