2009-07-08 8 views
5

Je suis en train de charger un JavaScript externe à l'aide getScript() jQuery, comme ceci:jQuery.getScript: variable de données dans le rappel non défini

$.getScript("http://api.recaptcha.net/js/recaptcha_ajax.js", function(data) { 
    window.alert(data); 
}); 

mais comme le montre la fenêtre d'alerte, la variable de données dans le rappel fonction est indéfinie, contrairement à promis dans http://docs.jquery.com/Ajax/jQuery.getScript#urlcallback.

Quelqu'un sait pourquoi cela pourrait être?

Merci.

+0

Je reçois la même erreur, j'ai demandé autour de irc mais personne ne semble savoir quel est le score. J'attends une réponse sur la liste de diffusion. – YHVH

Répondre

1

Oui, il charge le script mais, étrangement, la variable de données n'est pas définie. Mais j'ai essayé d'accéder à la variable (RecaptchaStr_en) à partir du script du site distant et il est défini.

$.getScript("http://api.recaptcha.net/js/recaptcha_ajax.js", function(data) { 
     window.alert(data); 
     alert($(RecaptchaStr_en)); 
    }); 
+0

Avez-vous trouvé le problème? Je vais avoir la même chose. Semble être une condition de course quelque part – Instine

3

Si vous regardez la source de getScript (ligne 3338 à jQuery-1.3.2.js), vous pouvez voir que la documentation ne tourne pas rond. Le paramètre data sert à envoyer les données à le serveur dans la chaîne de requête, ce que jQuery suppose que vous n'aurez pas besoin de charger les scripts; il est utilisé, par exemple, dans getJSON. getScript ne modifie que les données de hardcodes et évalue automatiquement le script récupéré pour vous.

La mauvaise nouvelle est que la documentation est erronée. Les bonnes nouvelles sont que vous avez probablement juste voulu évaluer le script de toute façon, ainsi vous n'avez probablement même pas besoin du rappel du tout.

1

Il suffit de charger vos scripts avec des chemins relatifs à savoir /Script/MyScript.js de rhather que http://mywebsite.com/Script/MyScript.js

Pour C Pirate, il n'y a rien de mal à la documentation, qui fonctionne comme prévu. XMLHttpRequest n'autorise pas les requêtes inter-domaines et semble que le paramètre data n'est pas défini même si vous placez le chemin entier dans votre même domaine.

0

Lorsque vous définissez le type de données à utiliser comme script, la requête n'est pas effectuée à l'aide de XMLHttpRequest, mais plutôt de la balise, de sorte que les données et les objets de réussite du rappel ne sont pas disponibles.

+0

Pouvez-vous ajouter une référence? @Al. –

Questions connexes