2011-12-17 109 views
-2

我需要在ASP.NET应用程序的页面加载前执行JavaScript。如何在页面加载之前执行jquery脚本?

我的函数返回用户位置,我想将值传递给服务器端并根据位置加载数据。

问题是JavaScript函数在页面加载后执行。

这里是我的代码:

$(function() { 
     getLocation(); 
    }); 
中的getLocation功能

我设置隐藏字段的值

$("#<%= HfLocation.ClientID %>").val(location); 

在后面的代码我试图让价值,但它总是空

protected void Page_Load(object sender, EventArgs e) 
     { 
      var location = HfLocation.Value; 
     } 
+0

为什么你不把隐藏的字段值放到SESSION或url参数中? – hungneox 2011-12-17 17:14:19

+0

但我认为问题会保持不变。该值将仅在页面加载时可用 – German 2011-12-17 17:18:04

+0

我认为它在加载页面之前是可用的,您应该了解ASP.NET页面生命周期,我猜 – hungneox 2011-12-17 17:21:18

回答

5

我需要在ASP.NET页面加载之前执行javascript应用

这个要求没有意义。记得ASP.NET是如何工作的:

  1. 用户请求到达Web服务器
  2. Web服务器请求分派给ASP.NET引擎。
  3. ASP.NET引擎实例化页面并遍历整个页面生命周期。
  4. 页面呈现为HTML和发送到客户端
  5. 客户端浏览器构建DOM,运行客户端的JavaScript,...

你看,这是不可能有步骤5执行在步骤3之前(执行Page_Load事件)。

+0

如果不可能,如果我需要在执行javascript之后加载数据,最好的方法是什么? – German 2011-12-17 17:22:10

+0

@德国,这将取决于什么数据和你想要加载它在哪里。你的确切场景是什么,你试图达到什么,...... – 2011-12-17 17:23:18

0

我需要在ASP.NET应用程序的页面加载之前执行JavaScript。

在这种情况下,您将需要提出两个页面请求。您无法使用单个页面请求执行此操作,因为在将HTML + JS发送到客户端之前,Page_Load()会运行。

取而代之的是,有一个小型页面可以进行JS调用,然后可以回发到当前页面,或者(可能更好)加载新页面。您可以通过常规(非服务器)表单传递位置数据,也可以通过在客户端上设置来自JS的Cookie,或者将其编码到查询字符串中。

然后,第二页/请求将在您触发Page_Load()事件时获取所需的数据。

相关问题