[英]JavaScript runtime error: “$” is undefined - ASP.NET WebForms (MasterPage)
我希望有人可以幫助我,因為我無法為我的問題找到可行的解決方案。
我正在使用C#在ASP.NET WebForms中進行編碼。 我使用母版頁。 在此MasterPage中,我在ScriptManager中定義了我的腳本。
<asp:ScriptManager ID="smScripts" runat="server">
<Scripts>
<asp:ScriptReference Path="~/Scripts/jquery-2.1.1.min.js" />
<asp:ScriptReference Path="~/Scripts/bootstrap.min.js" />
<asp:ScriptReference Path="~/Scripts/printArea.js" />
<asp:ScriptReference Path="~/Scripts/globalFunctions.js" />
<asp:ScriptReference Path="~/Scripts/jquery.browser.min.js" />
<asp:ScriptReference Path="~/Scripts/jquery.reject.js" />
</Scripts>
</asp:ScriptManager>
現在,如果我在函數內的任何頁面(例如Default.aspx)中使用jQuery,它將正常工作:
<script type="text/javascript">
function Print(options) {
$("div.PrintArea").printArea(options);
}
</script>
但是,如果我嘗試直接在腳本塊中使用它(例如,等到文檔准備好之后),它將無法正常工作:
<script type="text/javascript">
$(document).ready(function () {
// some code
});
</script>
我收到錯誤“ JavaScript運行時錯誤:“ $”未定義”。 我不知道該如何解決這個問題。
也許有人可以幫我嗎? 提前致謝。
只要確保
<asp:ScriptReference Path="~/Scripts/jquery-2.1.1.min.js" />
在致電之前已寫入/加載
$(document).ready(function ()
您的代碼“函數Print(options)”工作正常,因為頁面准備就緒時未加載jquery庫,但過了一段時間后加載了jquery庫。 您的Print函數在調用時需要jquery,而不是在頁面就緒事件中。
假設我們要在每個頁面中添加jquery,因此您需要在母版頁中包含腳本的引用。
根據最佳做法,您應該將所有javascript參考和腳本放在<body>
html標簽的末尾: </body>
標簽之前。
因此,在您的情況下,您應該在<body>
標記的末尾引用所有常見的js文件,然后設置如下所示的部分:
<asp:ContentPlaceHolder id="myJsWhatever" runat="server">
</asp:ContentPlaceHolder>
因此,在從母版頁繼承的頁面中,您在本節中定義了所有JS,並確保首先加載jquery。
如果您不想更改所有內容,只需在html頁面的head
添加jquery引用。
如果我在ContentPlaceHolder 之前而不是ScriptManager使用簡單的腳本標記,則它可以工作:
<head>
<script src="https://.../jquery-2.1.1.min.js" type="text/javascript"></script>
<asp:ContentPlaceHolder ID="phHead" runat="server">
</asp:ContentPlaceHolder>
</head>
為了確保每個內容頁面上的路徑都是正確的,我直接從服務器上加載了該路徑,而不是使用“〜/ scripts / ...”之類的路徑。 也許有更好的方法?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.