IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Impossible d'appeler une fonction javascript externe, dans $(document).ready


Sujet :

jQuery

  1. #1
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut Impossible d'appeler une fonction javascript externe, dans $(document).ready
    Bonjour,


    J'utilise le language JQUERY avec ASP.NET.
    J'ai des problèmes depuis que j'essaye d'externaliser le code dans un fichier .js.

    Un de me soucis est le suivant :
    Je n'arrive pas à appeler une fonction (se trouvant à l'intérieur d'un fichier .js)
    dans la fonction :
    $(document).ready(function () {});

    C'est normal ?
    Est ce dû au fait que mon fichier .js n'est peut être pas chargé à ce moment ?


    Voici le détail de mon code :

    fichier .JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function toto() {
        alert("hello world");
    }
    Fichier ASP.NET
    C'est un UserControl (c'est donc un .ascx au lieu d'un .aspx)
    J'ai inclus la bibliothèque JQUERY, au niveau supérieur dans le fichier .aspx.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Test.ascx.cs" Inherits="UserControls_Test" %>
    <link href="/style/admin.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="TestJS.js"></script>
     
    //...
    // Des balises HTML ..
    //...
     <script type="text/javascript" language="javascript">
        $(document).ready(function () {
                    toto();
         });
    </script>
    Grâce au debugger; , j'arrive à voir où ça plante.
    C'est au niveau de l'appel à la fonction toto() .
    La bibliothèque JQUERY me catch une erreur :
    "La valeur de la propriété « toto » est null ou non définie, pas un objet Function"

    Merci de votre aide.

  2. #2
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    pas de 404 avec ton debugger?
    il se passe quoi si tu tapes toto() dans la console ?

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Logiquement, ce genre d'erreur signifie que le fichier contenant la fonction toto() n'est pas inclus dans la page web. Vérifier le nom du fichier, attention aux majuscules et minuscules dans le nom du fichier et au chemin pour accéder au fichier.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    testé de mon coté ça fonctionne ...
    souci de path vraissemblablement

    si tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert('je charge le js externe !')
    en première ligne de ton js externe il se passe quoi ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 383
    Points : 10 411
    Points
    10 411
    Par défaut
    Et si tu charge jquery "de manière classique" juste avant tes autres fonctions JS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="TestJS.js"></script>
    c'est pareil ? parce que chez moi ça fonctionne correctement et je peux appeler des fonctions de "TestJS.js" depuis $(document).ready(function () {});

    Sinon question subsidiaire, pourquoi as-tu des balises html avant tes fonctions jquery ? Normalement tu devrais pouvoir mettre ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(document).ready(function () {});
    juste après tes balises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="TestJS.js"></script>

  6. #6
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Merci pour toutes vos réponses.
    C'était bien un problème de path.


    Le fichier JS et .ascx appelant sont situés dans le même dossier "UserControls".
    Le fichier .aspx appelant le fichier .ascx se situe dans un dossier, "MonDossier1" au même niveau que le dossier "UserControls".

    Ainsi dans mon fichier .ascx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="TestJS.js"></script>
    ne fonctionne pas.

    alors que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="../UserControls/TestJS.js"></script>
    => Je remonte d'un niveau, je redescends dans mon dossier UserControls
    fonctionne (mon fichier js est bien appelé)


    Pourquoi ...?
    Je pense qu'en fait en référençant le fichier TestJS.js dans mon Usercontrol (.ascx), il faire comme si on était dans la page (.aspx) appelant le Usercontrol.
    Donc indiquer le chemin relatif à partir de la page, et non le chemin relatif à partir du Usercontrol.
    J'aurais pu travailler en chemin absolu aussi ..
    J'ai pas testé cette hypothèse, donc à confirmer.

    Merci de m'avoir mis sur la voie. Du coup c'était plus un problème lié à ASP.NET.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/06/2008, 17h38
  2. Réponses: 1
    Dernier message: 25/10/2007, 21h25
  3. appeler une fonction javascript dans le code html
    Par kawther dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/05/2007, 16h40
  4. [PHP-JS] appeler une fonction javascript dans un lien
    Par kawther dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2007, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo