JS : passage de fonction à une fonction

JS : passage de fonction à une fonction - HTML/CSS - Programmation

Marsh Posté le 15-11-2006 à 14:36:51    

(Re) bonjour !
 
Dans un sujet précédent, j'ai écrit que je me suis sorti de mon problème précédent grâce à la possibilité qu'a Javascript de permettre de passer une fonction en paramètre d'une autre.
 
Cependant, j'ai un problème sous IE : 'undefined' a la valeur null ou n'est pas objet. Comme toujours, Microsoft nous propose une gestion d'erreur intuitive permettant de résoudre ses problèmes simplement, grâce à une interception avancée des erreurs (mmm ça sent l'ironie à plein nez).
 
Sous Firefox, aucun problème rencontré, tout fonctionne bien et la console d'erreur reste vierge.
 
Voici ce que je fait :
 
function js_local_recuperer_conges_saisis(date_debut, date_fin)
{
    // Cette méthode récupère les congés déjà saisis pour notre salarié et notre société
    function js_local_methode_traiter_conges(chaine_conges_saisis)
    {
       // Si la réponse est nulle on stoppe
       if(chaine_conges_saisis == "" )
       {
          return;
       }
 
       // Sinon on récupère les données
       var tab_conges_recuperes = chaine_conges_saisis.split("|" );
     
       // On passe tous les congés récupérés au tableau des congés
       for(var i=0; i < tab_conges_recuperes.length; i++)
       {
          tab_temp_local = tab_conges_recuperes[i].split(":" );
          tab_conges.push(tab_temp_local);
       }
    }
 
    // On demande au serveur de nous returnés les congés saisis et on lui passe le traitement a effectuer dessus
js_client_serveur("paie_saisie_conges_ajax.php","action=2&date_debut="+date_debut+"&date_fin="+date_fin,"POST",0,js_local_methode_traiter_conges);
}
 
La fonction js_client_serveur :
 
function js_client_serveur(script, donnees, methode, mode, fonction)
{
  // Déclaration de notre objet ajax
  var xhr_object = null;
 
  // On déclare la variable de résultat
  var resultat = null;
 
  // Contrôle de la compatibilité navigateur
  if(window.XMLHttpRequest)
  {
    // Firefox
    xhr_object = new XMLHttpRequest();
  }
  else if(window.ActiveXObject)
  {
    // Internet Explorer
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  }
  else
  {
    // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
    return;
  }
 
  // Si on a choisi le mode synchrone
  if(mode == 1)
  {
     xhr_object.open(methode, script, false);
     
     if(methode.toUpperCase() == "POST" )
     {
        xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded" );
     }
     xhr_object.send(donnees);
     resultat = xhr_object.responseText;
  }
  else
  {
     xhr_object.open(methode, script, true);
     xhr_object.onreadystatechange = function()
                                     {
                                 if(xhr_object.readyState == 4)
                                 {
                                            resultat = xhr_object.responseText;
 
                                            if(typeof(fonction) == "function" )
                                            {
                                               fonction(resultat);
                                            }
                                        }
                                     }
 
     if(methode.toUpperCase() == "POST" )
     {
        xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded" );
     }
     xhr_object.send(donnees);
  }
 
  // Retour du résultat
  return resultat;
}
 
Avez-vous une idée de ce qui peut déranger IE ?
 
Merci.

Reply

Marsh Posté le 15-11-2006 à 14:36:51   

Reply

Marsh Posté le 15-11-2006 à 14:45:43    

Il te faut surtout un vrai debugger, si t'as visual studio tu pourra y mettre des points d'arrêts... La gestion d'erreur de base n'est là que pour l'utilisateur lambda, pour les vrais développeurs ils faut d'autres outils à côté. C'est la même chose pour firefox, où il faut l'extension Venkman si on veut débugger du JS comme les vrais

Reply

Marsh Posté le 15-11-2006 à 14:55:40    

J'ai téléchargé la DugBar pour IE et depuis ma fonction fonctione :/
 
Peut être qu'il y avait juste un problème de cache, bien que je le vide avant chaque nouveau test.
 
Merci !!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed