2010-05-29 47 views
0

在我的Global.asax訪問頁面時,我有URL路由設置如下圖所示:jQuery對象預期的錯誤通過URL路由

routes.MapPageRoute("User Logon", "{Vendor}/Logon", "~/Logon.aspx"); 

在logon.aspx頁,我有一個腳本,「風格化」登錄按鈕:

<link href="jquery/css/flick/jquery-ui-1.8.1.custom.css" rel="stylesheet" type="text/css" /> 
<link href="images/style.css" rel="stylesheet" type="text/css" /> 
<script src="jquery/js/jquery-1.4.2.min.js" type="text/javascript"></script> 
<script src="jquery/js/jquery-ui-1.8.1.custom.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#<%= ButtonLogon.ClientID %>').button(); 
    }); 
</script> 

當我訪問該頁面我們的網址(在調試模式)http://localhost/logon.aspx?v=1頁面加載正確,正確jQuery的按鈕命令加載。但是,然後我使用新的URL路由訪問該頁面,我得到這個錯誤。

微軟JScript運行時錯誤:預期的對象

任何人有一個想法,爲什麼出現這種情況?

謝謝。

回答

3

這是因爲HTML中的相對路徑。

當您訪問您的頁面爲http://your.domain/Logon.aspx時,相對URL jquery/js/jquery-1.4.2.min.js解析爲http://your.domain/jquery/js/jquery-1.4.2.min.js並正確加載。

但是當你訪問它http://your.domain/xxx/Logon.aspx,即URL解析爲http://your.domain/xxx/jquery/js/jquery-1.4.2.min.js,既然真的沒有你的服務器上名爲xxx文件夾,服務器返回404和腳本加載失敗。因此,當您隨後嘗試訪問在該腳本中定義的函數和變量時,會出現錯誤。

爲了解決這個問題,您應該使用絕對路徑 - 即/jquery/js/jquery-1.4.2.min.js(注意斜線),或使用ResolveUrl(或Url.Content)方法來正確網址映射 - 即<%= Url.Content("~/jquery/js/jquery-1.4.2.min.js") %>

後一種選擇是優選的,因爲它不依賴於您的應用程序託管在域的根目錄。

+0

明白了。就是這樣。謝謝! – 2010-05-29 16:50:21

+0

如果我的回答對你有幫助,請你考慮接受它嗎? (只需點擊左側的空白複選標記) – 2010-05-29 16:59:05

+0

我有一個愚蠢的問題。哪一個是後者的選擇? – 2011-05-26 16:54:43