/ / Erreur d'exécution JavaScript: «$» n'est pas défini - ASP.NET WebForms (MasterPage) - javascript, jquery, asp.net, formulaires Web, pages maîtres

Erreur d'exécution JavaScript: «$» n'est pas défini - WebForms ASP.NET (MasterPage)

J'espère que quelqu'un pourra m'aider car je ne parviens pas à trouver une solution efficace à mon problème.

Je suis en train de coder en ASP.NET WebForms avec C #. J'utilise un MasterPage. Dans cette MasterPage, je définis mes scripts dans un 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>

Maintenant, si j'utilise jQuery dans n'importe quelle page e. g. Default.aspx dans une fonction cela fonctionne très bien:

<script type="text/javascript">
function Print(options) {
$("div.PrintArea").printArea(options);
}
</script>

Mais si j’essaie de l’utiliser directement dans le bloc de script - par exemple, d’attendre que le document soit prêt - cela ne fonctionne pas:

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

Je reçois le message d'erreur "Erreur d'exécution JavaScript:" $ "n'est pas défini". Je ne sais pas comment résoudre ce problème.

Peut-être quelqu'un peut me aider? Merci d'avance.

Réponses:

0 pour la réponse № 1

Assurez-vous juste

 <asp:ScriptReference Path="~/Scripts/jquery-2.1.1.min.js" />

est écrit / chargé avant d'appeler

$(document).ready(function ()

votre code "fonction Print (options)" fonctionnetrès bien parce que la bibliothèque jquery n’a pas été chargée lorsque la page était prête, mais chargée après un certain temps. Votre fonction Print nécessite jquery à l'appel et non sur l'événement prêt à la page.


0 pour la réponse № 2

Disons que nous voulons ajouter jquery à chaque page, vous devez donc inclure une référence de votre script dans votre page maître.

Selon les meilleures pratiques, vous devez placer toutes les références et les scripts javascript à la fin du document. <body> balise html: juste avant la </body> marque.

Donc, dans votre cas, vous devriez référencer tout votre fichier js commun à la fin de la <body> tag et ensuite définir une section comme celle-ci:

<asp:ContentPlaceHolder id="myJsWhatever" runat="server">

</asp:ContentPlaceHolder>

Ainsi, dans les pages qui héritent de la page maître, vous avez défini tous vos JS dans cette section et vous vous assurez que jquery se charge en premier.

Si vous ne voulez pas changer toutes vos affaires, ajoutez simplement la référence jquery dans le head section de votre page html.


0 pour la réponse № 3

Si j'utilise des balises de script simples avant le ContentPlaceHolder au lieu du ScriptManager cela fonctionne:

<head>
<script src="https://.../jquery-2.1.1.min.js" type="text/javascript"></script>

<asp:ContentPlaceHolder ID="phHead" runat="server">
</asp:ContentPlaceHolder>
</head>

Pour que le chemin soit correct sur chaque page de contenu, je le charge directement depuis mon serveur au lieu d'utiliser un chemin du type "~ / scripts / ...". Peut-être qu'il y a un meilleur moyen?