2008-09-18 94 views
7

我在VS2005中使用了AjaxControlToolkit,它工作正常。我有一些問題,但是,當我去一些網頁我,然後單擊後退,我得到這個JavaScript錯誤:'AjaxControlToolkit'未定義錯誤

'AjaxControlToolkit' is undefined

找遍MSDN論壇,谷歌,並嘗試了許多解決方案,但沒有工作。我試過了,EnablePartialRendering="true",等。在重寫所有內容和改變我的應用程序的工作流程之後,有什麼方法可以找到這個問題的根本原因或解決它?

+0

我在使用AjaxControlToolkit.CalendarBehavior在JavaScript中動態添加Calendar Extender控件(和相關控件)的頁面上出現相同的錯誤。下面關於切換到Sys.Extended.UI.CalendarBehavior的鏈接解決了我的問題 – DaveD 2012-04-16 15:00:08

+0

在我的情況下,問題是我使用了asp:ScriptManager。使用ajax:ToolKitScriptManager解決了這個問題。 – Tillito 2014-01-24 11:25:49

+0

Tilito解決方案爲我解決了這個問題。像你說的 – Doreen 2014-05-09 18:49:00

回答

0

這是一個JavaScript錯誤?

我想它與工具包中的後退按鈕支持有關。

而未定義的錯誤大多發生,因爲包含「AjaxControlToolkit」的腳本無法正確加載。

事情浮現在腦海:

  • 腳本獲取加載順序,並工具包獲得優先權?
  • 當任何加載的腳本中存在錯誤時,尚未加載的所有其他腳本將被簡單地取消並且不會被加載。

查看輸出的問題頁面的HTML,找到所有AXD文件的鏈接,並確保您可以下載它們並在裏面看到有效的javascript。

如果您還沒有,請獲取FirefoxFirebug,並且您應該能夠追蹤到發出錯誤的實際腳本行。

希望這會有所幫助。

+0

,後退按鈕問題。已經使用了提琴手/螢火蟲。我可以看到錯誤發生,它不會加載後退按鈕上的所有jscript,但是如果您從鏈接中點擊頁面。不知道我能做些什麼來讓它加載所有的jscript,後退按鈕或不,沒有重寫 – ScaleOvenStove 2008-09-18 21:48:35

+0

嗯......你在除了後退按鈕支持以外的其他地方使用AjaxControlToolkit嗎? – chakrit 2008-09-18 21:53:34

1

這可能是一個愚蠢的問題,但你仔細檢查過,以確保你的工具包參考在你的aspx文件的頂部?

(從評論添加爲便於閱讀)

嘗試添加該到你的web.config

<system.web.extensions> 
    <scripting> 
     <scriptResourceHandler enableCompression="false" enableCaching="false" /> 
    </scripting></system.web.extensions> 
0

爲[CodeRot]說,你需要確保你把所有的AJAX的web.config擴展到位,這是在做ASP.NET AJAX網站時(尤其是從VS 2005開始)最常見的漏洞。

接下來確保你在頁面上有一個ScriptManager(我猜你是從「EnablePartialRendering」提到的)。

請確保您的.NET版本引用了AjaxControlToolkit版本,它已針對.NET 2.0和.NET 3.5進行了編譯,並且我相信最新版本僅支持.NET 3.5。

確保您將Microsoft AJAX客戶端庫添加到頁面中(您沒有收到關於「Sys」缺失的任何錯誤)。

確保您在ASPX,ASCX或web.config中註冊AjaxControlToolkit。

0

如果還沒有什麼不適合你。確認你沒有緩存這個ascx/aspx。刪除OutputCache聲明。

3

爲了解決這個'AjaxControlToolkit'是未定義的錯誤,您可能還想確保在ToolkitScriptManager配置中將CombineScripts設置爲false。這可以在你的母版頁找到,這個解決方案已經爲我工作。

<myTagPrefix:ToolkitScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" EnablePartialRendering="true" SupportsPartialRendering="true" **CombineScripts="false"**> 

請注意,您需要將myTagPrefix更改爲您用於AjaxControlToolkit的tagprefix。這通常是在ASP中定義的這樣一個aspx文件的頂部...

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="myTagPrefix" %> 
6

我得到這個problme固定的,但不是通過設置CombineScripts =「假」,但通過使用該解決方案描述in this post

最新版本發生了一些變化,因此您必須在registerClass調用中使用Sys.Extended.UI.BehaviorBase而不是AjaxControlToolkit.BehaviorBase