javascript
  • jquery
  • asp.net
  • registerclientscriptblock
  • 2013-05-16 60 views 1 likes 
    1

    我有以下代碼在Page_Load上註冊一個javascript函數(也在Page_Init上試過)。 JavaScript的切換兩個小組從藏所示基於網頁的加載參數:Page_Load上的jQuery調用錯誤

    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應該放在頁面生命週期中,以便在頁面加載時正確工作?或者,我是否全力以赴?

    回答

    1

    您只需確保在JQuery引用之後插入的腳本被插入。

    改爲使用RegisterStartupScript - 在</form>結束標記之前插入腳本標記。

    +0

    非常感謝,非常完美。所以爲了弄清楚這一點,如果我想在頁面加載後使用StartupScript而不是正確的方式運行JavaScript,這個改變與我的代碼沒有任何關係吧? – mattgcon

    +0

    @mattgcon是的,正好。 – McGarnagle

    0

    不知道這是否是相關的,但我總是用: <script type="text/javascript"...

    很抱歉,這應該是一個評論,而不是答案。

    +0

    即使丟失了,仍然沒有解決問題。在Firebug中拋出錯誤並加載頁面後,我可以進入Firebug控制檯,然後$正常工作 – mattgcon

    +0

    我明白了。然後我假設當你查看源代碼時,這個腳本在jQuery文件之前被調用。你將不得不重新組織這些,以便首先調用jQuery腳本來定義'$'。 –

    0

    我認爲它與你使用的註冊功能有關。嘗試使用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); 
    
    +0

    謝謝史蒂芬,dbaseman雖然打敗了你,但是再次感謝 – mattgcon

    相關問題