Javascript ok en localhost, pas en production

Fermé
Neuro27 - 29 juil. 2010 à 15:18
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 - 30 juil. 2010 à 17:00
Salut tout le monde !

J'ai une question qui me taraude niveau javascript que je n'arrive pas à résoudre...

Pour faire simple, j'ai la fonction suivante qui fait un effet de transition sur l'écran avant d'afficher le résultat qui correspond à la variable envoyée.

function depli(num){
wtec = document.documentElement.clientWidth;
wconteneur = wtec - 22;
var objJQ = $("#ContenuD");

objJQ.animate(
{left: 0,width: wtec-4},'slow');

$("#InfoDossier").animate(
{width: wconteneur},'slow',

function(){
MAJ_projet(num);
}

);
}

Concrètement, le 'DEPLI' fait l'effet (qui fonctionne très bien), puis la fonction 'MAJ_projet' qui est appelé juste au dessus, se charge d'afficher le tout.

function MAJ_projet(num){
$.ajax({
url:"MA-PAGE-CIBLE.asp",
cache:false,
async: false,
type:"POST",
data:"num="+num,

start:function(){
attenteP();
},

success:function(htm){
afficherP(htm);
},

error:function(XMLHttpRequest, textStatus, errorThrows){
}

});
}


Le résultat c'est que, en LOCAL cela fonctionne parfaitement aussi bien sous Firefox que IE, le dépli ET l'affichage sont OK.

Par contre, du moment que tout passe sur FTP et c'est testé en ligne, l'effet de DEPLI fonctionne, mais la fonction 'MAJ_projet' n'est pas appelé... =_=

Il doit y avoir une erreur de syntax qui fait que cela passe en local mais pas en ligne, mais où ? Merci d'avance. :)


7 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
29 juil. 2010 à 18:26
Re,
il faut la réponse B et c'est mon dernier mot jean pierre :D
voici un p'tit exemple de code. (On notera qu'il faut biensur que tu ais includé JQuery au préalable)

$(document).ready(function(){
    
    MAJ_projet = function(num){
        $.ajax({
                    url:"MA-PAGE-CIBLE.asp",
                    cache:false,
                    async: false,
                    type:"POST",
                    data:"num="+num,
                    
                    start:function(){
                    attenteP();
                    },
                    
                    success:function(htm){
                    afficherP(htm);
                    },
                    
                    error:function(XMLHttpRequest, textStatus, errorThrows){
                    }
        });
    } ;
    
    //Ensuite tu définies tes autres fonctions comme ça

    /*Pattern générique : 
    Le_nom_de_ta_fonction = function(argument_1, argument_2, argument_n){
        alert('on exécute Le_nom_de_ta_fonction');
    };
    */
    
});


Volà, j'espère que ça va l'faire ;)
1
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
30 juil. 2010 à 17:00
En fait je dois ré-écrire les fonctions en intégrales dans le 'pattern générique' ou juste les listés comme ci-dessus ?
Il faut toutes les réécrire, il ne faut pas simplement les définir comme tu as mis.
Peut-être qu'il ne faut encapsuler que le code Jquery, vu qu'il y'a un peu de code maison à côté.
Pour que ça fonctionne dans ton cas, il faut que ce soit au moins les fonctions appelées par l'effet + chargement des données. Après tu peux par souci d'unification réécrire tes autres fonctions sous cette forme.

Ca va marcher ! ;)
1
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
29 juil. 2010 à 16:22
Salut,
je vois que tu utilise JQuery, juste comme ça, ça serait pas une question de chargement du DOM ?
Est-ce que tu as encapsulé tes définitions de méthode dans un
$.document.ready(function(){
   //Ici les définitions
});

?
0
Neuro27 Messages postés 6 Date d'inscription jeudi 29 juillet 2010 Statut Membre Dernière intervention 23 septembre 2010
29 juil. 2010 à 16:48
Salut,

Visiblement non, donc cela me laisse donc une grosse lueur d'espoir. :D

Je ne vois pas trop ce que c'est le chargement des DOM, je vais chercher sur le net. Ou si tu repasses entre deux pour expliquer brièvement, cela servira forcément à d'autres.

Merci pour cette piste Zep3k!GnO !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
Modifié par Zep3k!GnO le 29/07/2010 à 17:42
En fait, le DOM, c'est la structure HTML d'une dite page à proprement parlé.
Attendre que le DOM soit chargé, c'est s'assurer que toutes les balises composant la page html soit bien interpretées et accessibles.

Pour de bonnes pratiques en JS, je te conseil de toujours faire cette vérification avant de définir du js.

Bon courage, j'espère que ça sera ça ;)


Zep3k!GnO
On est des rangers mec, des rangers...
0
Neuro27 Messages postés 6 Date d'inscription jeudi 29 juillet 2010 Statut Membre Dernière intervention 23 septembre 2010
29 juil. 2010 à 17:55
Tes descriptions sont très clairs, mais vu que que le javascript et moi cela fait deux, je comprends que je dois encapsuler mes définitions de méthodes, mais je n'ai pas compris comment faire. Avec ton dernier message je ne sais même plus où il faut la mettre dans le code, bon ok c'est la fin de journée mais bon... =_=

Réponse A :
J'ai beau avoir englobé toutes mes fonctions d'un

$.document.ready(function(){
//Toutes les fonctions les unes à la suite des autres
});

Réponse B : ou dois-je plutôt faire un

$.document.ready(function(){
//Appeler mes fonctions une à une à la suite ? Un exemple de syntaxe ? je suis sûr de mettre planté.
});

Réponse C : encore autre chose

J'ai aussi cherché sur GG, ce qui m'a permis de découvrir que c'est une fonction super importante, mais j'ai pas trouvé d'exemples qui correspond à ma situation.

Bonne soirée, merci pour tes précisions en tout cas. :)
0
Neuro27 Messages postés 6 Date d'inscription jeudi 29 juillet 2010 Statut Membre Dernière intervention 23 septembre 2010
30 juil. 2010 à 16:40
Je te remercie, la boite de dialogue s'affiche bien avec le code en dessous du pattern générique, malheureusement cela ne fonctionne pas, l'action ne se produit pas. XD

Peut-être qu'il ne faut encapsuler que le code Jquery, vu qu'il y'a un peu de code maison à côté.

$(document).ready(function(){
//La fonction principale comme ci-dessus


/*Pattern générique, les autres fonctions appelés par ce code uniquement ou tout le javascript ? */
fonction1 = function(num);
fonction2 = function();

//ETC...
} ;

En fait je dois ré-écrire les fonctions en intégrales dans le 'pattern générique' ou juste les listés comme ci-dessus ?

Merci pour tes divers éclaircissements en tout cas.
0