À l'aide de JQuery getJSON avec d'autres scripts Javascript inclus donne ReferenceError
J'ai fait une petite page HTML d'exemple, pour obtenir de JQuery getJSON méthode de travail. Il ressemble à ci-dessous (désolé pour la médiocrité, c'était juste une preuve de concept pour ensuite les ajouter plus tard dans un projet plus vaste):
<script type="text/javascript">
function test() {
$.getJSON("http://api.flickr.com/services/rest/?&method=flickr.people.getPublicPhotos&api_key=e999b3a5d47d013b780e8ac255c86266&user_id=24579658@N03&format=json&jsoncallback=?",
function(data){
$.each(data.photos.photo, function(i,photo){
$("<img/>").attr("src", "http://farm5.static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + ".jpg").appendTo("#images2");
//alert();
if ( i == 6 ) return false;
});
});
}
Je puis appeler cette méthode lorsque quelque chose a été cliqué à l'aide de
<script type="text/javascript">
$(function() {
$("#yo").click(test);
});
</script>
Cela a bien fonctionné dans un projet où la seule JS j'ai inclus a été JQuery et ce sont les seules fonctions. Cependant, une fois que je l'ai ajouté à mon autre projet, à travers les erreurs. L'autre projet est mootools bibliothèques incluses qui je pensais peut-être l'avez fait. Cependant, même après la disparition complète de la mootools trucs et juste en utilisant cette jquery trucs, j'ai toujours l'erreur ci-dessous:
ReferenceError: $ n'est pas défini
J'ai d'autres javaScripts comme un google un et quelques autres, ceux que j'ai faits, mais ils n'ont pas utiliser JQuery ou Mootools. Quelqu'un peut-il expliquer pourquoi je serais obtenez cette erreur?
$("#yo").click(test);
, pourquoi la fonction wrap? jquery est en mode noConflict?C'est un raccourci pour le $(document).prêt()
OriginalL'auteur joshholat | 2010-09-29
Vous devez vous connecter pour publier un commentaire.
Il semble que si certains de code supplémentaire que vous avez apporté a pas défini le symbole$. En fait, il est possible que vous avez inclus un code qui appelle jQuery noConflict fonction, qui annule la définition de dollars.
jQuery, en substance, qu'il définit comme ceci:
Qui signifie que vous pouvez remplacer le symbole $ dans votre code avec "jQuery", par exemple:
ou
Bien sûr, le symbole $ raccourci est certainement à portée de main. Il serait dommage d'abandonner, de sorte que vous pouvez redéfinir pour faire de "jQuery" une fois de plus. Vous ne voulez pas casser l'un de vos autres, non-jQuery JavaScript, cependant, de sorte que le moyen sûr de rétablir l' $ raccourci serait pour envelopper l'ensemble de votre propre code dans les fermetures. Le seul paramètre à chaque fermeture de la fonction "$" et l'argument transmis à chaque fermeture d' "jQuery." Par exemple:
Avis que la fonction anonyme fermeture a le paramètre $, de sorte que l'intérieur de l'ensemble de la fonction $ a la valeur que vous passez à la fonction anonyme. Ensuite, notez qu'à la fin de la définition de la fonction, nous avons immédiatement appeler la fonction que nous venons d'défini et nous passer de jQuery comme argument. Cela signifie qu'à l'intérieur de la clôture, mais seulement à l'intérieur de la fermeture de dollars, est maintenant un raccourci pour jQuery.
Une note finale, vous pouvez délibérément désactiver les plugins jQuery utilisation du symbole $ par appel de jQuery.noConflict() (voir http://api.jquery.com/jQuery.noConflict/). Si vous serez en utilisant du code JavaScript-delà de votre code et de jQuery, c'est une bonne idée d'appeler cette fonction après le chargement de tous vos fichiers JavaScript, puis utilisez la fermeture de la technique décrite ci-dessus, de sorte que vous pouvez continuer en toute sécurité à l' $ raccourci dans votre propre code.
OriginalL'auteur dgvid
$ is not defined
signifie que jQuery n'est pas lié à la$
variable au moment de l'erreur. Ce pourrait être pour l'une des deux raisons:Lorsque la bibliothèque jQuery est chargé, il définit $ à être une référence à la bibliothèque. Vous pouvez la modifier si vous le souhaitez à l'aide de jquery.noConflict(). D'autres bibliothèques (comme mootools) également utiliser la variable$, et le fait d'avoir plusieurs bibliothèques entraînera des conflits de noms. Avez-vous supprimé la référence à la bibliothèque mootools?
Uncaught TypeError: Object function (el, nc){ return document.id(el, nc, this.document); } has no method 'getJSON'
-> document.id est un mootools function ($ cartes si pas défini précédemment). cela signifie que jquery a échoué à définir elle-même. êtes-vous en utilisant mootools plus que 1.2.2? de toute façon, hors de propos, vous avez dit que l'exception référence est aussi en train d'arriver w/o mootools.OriginalL'auteur lonesomeday
Vous avez un conflit avec la variable $ que mootools est aussi la tentative d'utilisation de la variable. 1 seul pouvez l'utiliser à la fois.
Découvrez jQuery.noConflict() -> http://api.jquery.com/jquery.noconflict/
Vous devez appeler aucun conflit avant toute tentative d'utilisation de jQuery est fait. Vous avez un peu de optons avec l'aide de jQuery.noConflict(). L'un consiste à réaffecter et utiliser jQuery variable spécifique partout:
Maintenant, vous pouvez utiliser $jQ
Lorsque vous traitez avec un autre fichier JS vous pouvez utiliser un petit JS fonctionnalité pour permettre à l' '$ variable " signifie "jQuery" dans votre fichier:
Cette petite beauté est appelé auto-invocation de fonction anonyme. Nous définissons l' $ comme un paramètre d'entrée, mais le passage en jQuery pour s'assurer que c'est ce que l' $ variable de moyens.
document.id
à la place. si ont été pour s'en emparer, le plus certainement ne se détache pas comme indéfini.OriginalL'auteur Andrew Wirick