Chargement de scripts à l'aide de jQuery
$.ajax({ url: "plugin.js", dataType: 'script', cache: true, success: function() {
alert('loaded');
}});
1) je ne peux pas obtenir le script à charger, probablement dus à une erreur de chemin d'accès, mais comment puis-je déterminer le chemin d'accès correct? Le code ci-dessus est en init.js, plugin.js est également dans le même dossier.
2) puis-je charger de plusieurs plugins à la fois avec la même demande? par exemple. plugin.js, anotherplugin.js?
root
|
|_ html > page.html
|
|_ static > js > init.js, plugin.js
Merci pour votre aide
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser getScript, pas ajax. Ajax est pour le chargement de données, pas pour l'exécution du code.
Si vous avez besoin de charger plusieurs fichiers, essayez quelque chose comme ceci:
getScript
est un raccourci pour$.ajax({ url: url, dataType: 'script', success: success });
, donc il n'y a rien de mal avec l'aide de.ajax
, c'est juste un peu plus verbeux.1) Le chemin d'accès sera par rapport à la page il est chargé de l' (et non pas le chemin de votre script d'initialisation) puisque c'est l'url, le navigateur sera au moment de l'exécution de la requête ajax.
Modifier: Basé sur votre modifier le chemin d'accès pour charger votre script à partir de l'est, soit
/static/js/plugin.js
(si ça va être déployé à la racine de votre domaine), ou../static/js/plugin.js
pour être sûr (en supposant que toutes les pages qu'il sera chargé du seront en/html
).2) No. Si ils sont dans des fichiers différents, ils doivent être différentes demandes. Vous pouvez fusionner en un seul fichier sur le serveur-côté si...
http://<domain>/static/js/plugin.js
. En supposant que le fichier est là où vous vous attendez & qui fonctionne, essayez d'installer firebug et de regarder sur le Net quand la requête ajax est déclenché pour voir l'URL demandée et de voir ce que la réponse est...Comme une mise à jour, la meilleure façon de le faire avec jQuery 1.9.x est d'utiliser Deferreds-méthodes (c'est à dire $.lors de l'), comme suit:
La
.done()
fonction de rappel a un certain nombre de paramètres.Lire la documentation: http://api.jquery.com/jQuery.when/
Découvrez le jQuery .getScript fonction, ce qui vous permettra de charger le script et l'inclure dans le document actuel.
1) Le chemin d'accès doit être
/static/js/plugin.js
, par rapport à votre document.2) No. Chaque fichier est chargé par une simple requête HTTP.
Je voudrais vérifier de Firebug net onglet pour voir si elle a été correctement chargé, et le chemin qu'il est en train de charger à partir de.
Le chemin d'accès sera à partir du document dans le cas où le JavaScript est inclus.
Je garde aussi un objet de config comme ceci (PHP dans cet exemple)
Alors vous pourriez le faire
Vous pouvez utiliser
'../'
pour définir le chemin du script en tant que chemin d'accès de base. Ajoutez ensuite le chemin relatif pour le