2010-05-22 4 views
2

$ Je veux charger la visionneuse javascript seulement quand une certaine condition est satisfaite si je charge à l'aide de $ .ajax comme ceci:Problèmes d'utilisation .ajax

$.ajax({ url: "../static/js/lightbox.js", dataType: 'script', cache: true, success: function() { 
    alert('loaded'); 
    $("a.lightbox").lightbox({ 
     opacity: "0.6", 
     width: "940" 
    }); 
}}); 

Je vois l'alerte « chargé » mais la visionneuse ne fonctionne pas. Cependant, quand je charge le fichier directement (script src) à partir du HTML, lightbox fonctionne. Comment puis-je réparer ça?

Un grand merci pour votre aide.

+0

Avez-vous essayé '$ .getScript' au lieu de' $ .ajax'? il télécharge le script tout comme la fonction ajax mais il va aussi 'eval' le script téléchargé pour que les fonctions et les variables soient mises à la disposition de votre autre javascript. –

Répondre

4

Vous voulez utiliser $.getScript() pour cela (plus court, mais l'effet de la mise en cache légèrement différente), par exemple:

$.getScript("../static/js/lightbox.js", function() { 
    $("a.lightbox").lightbox({ 
    opacity: "0.6", 
    width: "940" 
    }); 
}); 
+1

+1 pour '$ .getScript' ne savait pas à ce sujet :) –

+0

getScript est un raccourci vers $ .ajax ({url: url, type_données: 'script'}) –

+0

getScript est le même, juste que ce n'est pas le cas soutenir la mise en cache asynchrone. – 3zzy

1

ne soit correctement téléchargé le script? Voyez-vous l'alerte «chargée»? Si j'étais vous je mettrais une alerte dans lightbox.js pour voir si elle est correctement exécutée après le téléchargement. Vérifiez également les erreurs JavaScript.

+0

Bonne idée! Mais non, l'alerte de lightbox. js ne charge pas. :( – 3zzy

+0

Est-ce que le fichier est téléchargé? Cela peut être un problème en raison d'un mauvais chemin Vous pouvez utiliser Fiddler de Firebug pour voir si la requête HTTP est réussie ou non –

0

Le problème est que js ne fait pas encore partie du DOM. C'est correct que vous obteniez le lightbox.js mais ce n'est pas prêt pour l'exécution. Pour obtenir un fichier js dynamiquement, vous devrez utiliser la méthode getScript au lieu d'ajax. Jetez un oeil à l'API: http://api.jquery.com/jQuery.getScript/

Questions connexes