2009-03-02 173 views
1

我是JavaScript的新手。我希望能夠做的是從位於ASP.NET MVC項目的腳本文件夾中的.js文件中調用一個函數。從ASP.NET MVC調用外部.js

功能是:

function myfunction() { 
    alert("HELLO"); 
} 

......它駐留在文件brfix.js

在一個的ViewPage我這樣稱呼它:

<script src="../../Scripts/brfix.js" type="text/javascript"></script> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     myfuntion(); 
    }); 
</script> 

但沒有按代碼沒有工作。不過,如果我直接將JS代碼到的ViewPage,它的工作原理,這樣的:

<script type="text/javascript"> 
    $(document).ready(function() { 
     alert("HELLO"); 
    }); 
</script> 

如何調用基於文件的js函數?一些JavaScript-Big-Kahuna能幫助我嗎? =)

回答

0

這可能是參照外部文件是錯誤的:

<script src="../../Scripts/brfix.js" type="text/javascript"></script> 

確保引用是正確的。 您可以嘗試使用視圖源來查看實際位置../../Scripts/brfix.js被翻譯成最終頁面。
你也可以試試FireBug的FireFox。

0

如果您的mvc站點是iis中的根站點,您可以使用斜槓啓動腳本src以獲取腳本。否則你可以使用asp:ScriptManager來包含腳本

1

如果該代碼是直接從你的源代碼中粘貼的,那麼你有一個錯字,這就是爲什麼它不起作用!

你的函數被調用MyFunction的(),但你打電話myfuntion()

開發時,你應該啓用瀏覽器的JS錯誤。你不會說你正在使用哪個瀏覽器。對於IE,它在工具 - 選項 - 高級。取消選中「禁用腳本調試」選項。在firefox中,我會使用類似FireBug的東西,就像Dror所說的那樣,如果內存服務,那麼在發生javascript錯誤時會出現一些東西。如果您仍然遇到問題,我會嘗試安裝Fiddler2(在IE中)併爲js文件構建請求並查看返回的內容。

另一種選擇是放置一個調試器;在你調用你的函數之前調用,你應該能夠通過JavaScript。

0

正如其他海報提到的,有一個錯字。然而...

查看Url.Content()方法來引用您的網站內容。 (圖片,腳本等)使用../ ..是不可靠的,特別是如果您的URL具有不同級別的深度,或者您的應用程序位於子目錄中。

這裏有一個幫手我在我的大多數項目的使用,例如:

public static string Script(this HtmlHelper Html, string url) 
{ 
    UrlHelper Url = new UrlHelper(new RequestContext(Html.ViewContext.HttpContext, Html.ViewContext.RouteData)); 
    string html = "<script type=\"text/javascript\" src=\"{0}\"></script>"; 
    return string.Format(html, Url.Content(url)); 
} 

在這裏,它被稱爲:

<%= Html.Script("~/public/js/blah.js") %> 
0

我有同樣的問題,事實證明,我有幾個js文件沒有找到。如果你的MVC項目結構是默認VS設置和您的視圖頁主頁例如,那麼我認爲下面會發現文件:

<script src="../Scripts/brfix.js" type="text/javascript"></script> 

但即使找到一個其他的js文件不被發現而引起我的$(文檔)。已不能工作。在Firefox的Firebug中檢查您的頁面,如果沒有找到文件,您將看到html標記,並顯示一條消息,指出無法找到資源,位於違規引用下方。一旦我解決了所有的js引用,然後我的$(document).ready工作。

奇怪的VS告訴我,當引用正確時找不到js文件,並且在引用不正確時沒有標記問題。