【问题标题】:jQuery call error on Page_LoadPage_Load 上的 jQuery 调用错误
【发布时间】:2013-05-16 22:51:46
【问题描述】:

我有以下代码在 Page_Load 上注册一个 javascript 函数(也在 Page_Init 上尝试过)。 javascript 根据页面加载时的参数将两个面板从隐藏切换到显示:

    protected void Page_Load(object sender, EventArgs e)
    {
        String switchAction = "<script language='javascript'>switchactionpanel(" + (int)((Global.upAction)Enum.Parse(typeof(Global.upAction), Global.ProfileAction.ToString())) + ")</script>";
        Page.RegisterClientScriptBlock("switchaction", switchAction);
    }

但是当页面加载时我收到一个错误:$ 没有定义。

我查看了 Firebug 并且正在加载 jQuery 文件,但是,在 .Net 选项卡中加载的第一个文件是页面本身。我知道 jquery 是正确的,因为相同的代码适用于不同的页面。当页面加载时,我的 RegisterClientScriptBlock 应该放在页面生命周期的哪个位置才能正常工作?还是我做错了?

【问题讨论】:

    标签: javascript jquery asp.net registerclientscriptblock


    【解决方案1】:

    您只需要确保插入的脚本在 JQuery 引用之后插入。

    改用RegisterStartupScript——在&lt;/form&gt;结束标签之前插入脚本标签。

    【讨论】:

    • 非常感谢,工作完美。因此,为了弄清楚这一点,如果我想在页面加载后运行 javascript,请使用 StartupScript 来代替正确吗?此更改与我的代码无关,具体对吧?
    【解决方案2】:

    不确定这是否相关,但我总是使用: &lt;script type="text/javascript"...

    抱歉,这应该是评论而不是答案。

    【讨论】:

    • 即使丢失了,仍然没有解决问题。在 Firebug 中引发错误并加载页面后,我可以进入 Firebug 控制台,然后 $ 工作正常
    • 我明白了。我假设当你查看源代码时,这个脚本在 jQuery 文件之前被调用。您必须重新组织这些,以便首先调用 jQuery 脚本来定义 $
    【解决方案3】:

    我认为这与您使用的注册功能有关。尝试使用RegisterStartupScript 而不是RegisterClientScriptBlock

    Page.ClientScript.RegisterStartupScript(this.GetType(), "switchaction", "<script language='javascript'>switchactionpanel(" + (int)((Global.upAction)Enum.Parse(typeof(Global.upAction), Global.ProfileAction.ToString())) + ")</script>", false);
    

    【讨论】:

    • 谢谢 Steven,虽然 dbaseman 打败了你,但再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    相关资源
    最近更新 更多