Question

Je suis en train d'ajouter une référence de script à jQuery dans ma page principale pour que cela fonctionnera pour toute page. Il ressemble actuellement à cette

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

Le problème est que le chemin est toujours par rapport à la page ASPX exécution si cela ne fonctionnera que si le fichier « jquery.js » se trouve dans le même dossier. Pour le faire fonctionner, je dois changer la ligne à:

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

Ceci est évidemment loin d'être idéal, car il ne fonctionne que pour les pages qui sont deux niveaux de profondeur du dossier racine. Si je tente ce qui suit, IIS renvoie une erreur au sujet d'un caractère inattendu.

<script runat="server" type="text/javascript" src="~/jquery.js"></script>

Toutes les idées?

EDIT: J'ai oublié de mentionner aussi que le script doit être dans la balise head

La réponse actuelle jette un top « ASP.NET framework Ajax côté client n'a pas réussi à charger. » erreur lorsque je l'ajoute à ma page principale. Son jeté de javascript et non le compilateur .Net. Si je déplace le ScriptManager à la section de la tête où il devrait être, je reçois une erreur de compilation sur le ScriptManager devant être dans une balise de formulaire.

La troisième réponse jette un " caractères illégaux dans le chemin. " exception du compilateur

EDIT 2:. Quand j'ajoute cette ligne à mon étiquette de tête, je reçois cette erreur IIS

La collection Controls ne peut pas être modifié car le contrôle contient des blocs de code (à savoir <% ...%>)

RESOLU: Je pris la réponse sous la direction de la réponse ci-dessous et le mettre dans un asp: ContentPlaceHolder élément

Était-ce utile?

La solution

Vous pouvez utiliser un ScriptManager :

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/jquery.js" />
    </Scripts>
</asp:ScriptManager>

EDIT: Si vous absolument ont besoin dans votre section <head>, vous pouvez faire quelque chose comme:

<head>
    <script type="text/javascript" 
        src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

EDIT 2: Selon les commentaires, si vous observez que

  

La collection Controls ne peut pas être modifié car le contrôle contient des blocs de code (à savoir <% ...%>)

vous devrez peut-être modifier ci-dessus pour utiliser la syntaxe de liaison de données:

<head>
    <script type="text/javascript" 
        src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

Autres conseils

Essayez <%# au lieu de <%= à la page principale en section tête

<script type="text/javascript" 
        src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>">
</script>

Puis dans le code derrière la page principale sous événement Page_Load

Page.Header.DataBind();

Maintenant, vous êtes bon pour aller soit avec jQuery et JavaScript ainsi que CSS juste que vous devez changer votre chemin dans ResolveUrl fichier que vous voulez gérer CSS, JavaScript, jQuery.

Si vous n'êtes pas va nous asp: ScriptManager ou chemins absolus alors vous pouvez le faire comme ceci:

<script runat="server" type="text/javascript" 
  src='<%= Page.ResolveUrl("~/jquery.js") %>'></script>

Je ne sais pas si vous les gars a trouvé la solution à votre problème ou non. Je faisais face au même problème et aller de noix pour savoir pourquoi j'obtiens l'erreur « jQuery est indéfini » sur les plug-ins que j'utilise. J'ai essayé toutes les solutions que je reçois de l'Internet, mais pas de chance du tout.

Mais, tout à coup splash quelque chose sur mon esprit qui peut être les fichiers de script doit être dans l'ordre. Alors, je me suis déplacé le referece jquery à première position et tout commence à travailler comme un charme.

Rappelez-vous les gars, si vous utilisez des plug-ins avec jquery, assurez-vous d'utiliser l'ordre folloing de mise en référence à ces fiels.

  1. référence à la bibliothèque jquery
  2. référence à l'autre plug-in après les bibliothèques et ainsi de suite ...

par exemple:.

  1. "script src =" js / jquery-1.3.2.min.js » type = "text / javascript" ...
  2. "script src =" js / jqDnR.min.js » type = "text / javascript" ...
  3. "script src =" js / jquery.jqpopup.min.js » type = "text / javascript" ...
  4. "script src =" js / jquery.bgiframe.min.js » type = "text / javascript" ...

Assurez-vous toujours que vous devez mettre la référence jquery d'abord, puis les bibliothèques suivantes.

L'espoir, cela résout votre problème en particulier lorsque vous utilisez avec MasterPages. Il est très étrange que cela fonctionne, peu importe quel ordre que vous utilisez lorsque vous ne l'utilisez MasterPages mais quand vous le faites, il requres en quelque sorte l'ordre.

Bonne chance et codage heureux,

Vincent Souza D'

Regardez Comment exécuter une racine « / » . Cela devrait résoudre tous vos problèmes en ce qui concerne les chemins de fichiers .js non résolus. Vous reconfiguré essentiellement le serveur VS Dev pour exécuter votre application comme localhost:port/ par opposition à la localhost:port/application name/ régulière faisant la résolution de nom fonctionne de la même manière comme il le fait sur IIS.

<script type="text/javascript" src="/full/path/to/jquery.js"></script>

Si cette balise de script va directement dans le navigateur, vous pouvez remplacer probablement là la racine de votre site. Au moins pas sur le serveur. Ainsi, vous pouvez:

  1. Déployer le site à la racine du domaine nom et utiliser des chemins absolus (Solution la plus simple).
  2. Insérer cette lien avec le contrôle du serveur.
  3. Prétraitement résultant HTML avant l'envoyer au client (avec HttpResponse.Filter).

Vous pouvez également utiliser balise HTML:

<base href="http://www.domain.com"></base>  

et tous les liens dans la section d'en-tête sont par rapport à l'adresse de base:

<script type="text/javascript" src="scripts/jquery.js"></script>

Il est souvent utile lorsque vous avez des destinations multiples d'édition, comme serveur dev web local, serveur de démonstration, etc. Vous remplacez simplement l'URL de base.

<body>
<script language="javascript" src='<%= this.ResolveClientUrl("~/full/path/to/jquery.js") %>' type="text/javascript"></script>
</body>

Pour chemin absolu du fichier pour toute utilisation de la page en suivant:

<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script> 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top