【问题标题】:How to execute jquery script before page load?如何在页面加载之前执行 jquery 脚本?
【发布时间】:2011-12-17 17:12:36
【问题描述】:

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

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

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

这是我的代码:

    $(function () {
        getLocation();
    });

在 getLocation 函数中我设置了隐藏字段值

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

在后面的代码中我尝试获取价值,但它总是空的

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

【问题讨论】:

  • 为什么不将隐藏字段值放入 SESSION 或 url 参数?
  • 但我认为问题将保持不变。该值仅在页面加载时可用
  • 我认为它在页面加载之前可用,我猜你应该了解 ASP.NET 页面生命周期

标签: c# javascript jquery asp.net


【解决方案1】:

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

这个要求没有意义。记住 ASP.NET 的工作原理:

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

您会看到,在第 3 步(其中执行 Page_Load 事件)之前执行第 5 步是不可能的。

【讨论】:

  • 如果不可能,如果我需要在 javascript 执行后加载数据,最好的方法是什么?
  • @German,这将取决于什么数据和你想在哪里加载它。还有你的确切情况是什么,你想要实现什么,......
【解决方案2】:

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

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

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

当 Page_Load() 事件触发时,第二个页面/请求将包含您需要的数据。

【讨论】:

    【解决方案3】:

    使用 javascript 执行 ajax 回调来请求数据。

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 2018-08-16
      • 2015-09-30
      • 2010-10-27
      • 2023-04-04
      相关资源
      最近更新 更多