Intérompre une fonction... [Résolu]

Signaler
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
-
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
-
Bonjour,

Je cherche a stopper le déroulement d'une fonction lors d'une condition, j'ai testé avec return mais ça marche pas...

Fonction principal:

function valide(filename, id_form, style, id_fenetre, bouton)  {

    var xhr_object = null;    
    var myform = document.getElementById(id_form);
    var nb_champs = myform.elements.length;
    var data = "";
    var method = "POST";

    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;
    }
     
    for(i=0;i<nb_champs;i++)
    {
        data = data+myform.elements[i].id+"="+myform.elements[i].value+"&";
    }
   
    xhr_object.open(method, filename, true);
   
    xhr_object.onreadystatechange = function() {
       if(xhr_object.readyState == 4) {
          var msg = xhr_object.responseText;
          if(msg != "") {
              msg_erreur(msg, style, 'erreur', '250', '130');
              C'est laque je la stopper!!

            return;
          }
       }
    }
   
        xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhr_object.send(data);
   
        if(bouton == "ok")
            window.Windows.close(id_fenetre);
        else
            document.getElementById(bouton).disabled = true;
}

fonction msg_erreur:

function msg_erreur(msg, style, status, largeur, hauteur) {       
      if (status="attention")
          var type = "./images/attention.png";
      if (status="erreur")
          var type = "./images/erreur.png";

      debug($('modal_window_content'))
      var win = new Window('Erreur', {className: style, title: " Erreur de saisie ", resizable: false, closable: false, maximizable: false, minimizable: false, top:100, left:100,  width:largeur, height:hauteur, zIndex:150, opacity:1, resizable: false})
      win.getContent().innerHTML = "texte html";
      win.setDestroyOnClose();
      win.showCenter(true);
      return(false);
}

merci

Az

6 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
bonjour,
tu attends la fin , lé réponse d'ajax
xhr_object.onreadystatechange = function() {
       if(xhr_object.readyState == 4) {
          var msg = xhr_object.responseText;
          if(msg != "") {
              msg_erreur(msg, style, 'erreur', '250', '130');
              C'est laque je la stopper!!

            return;
          }
       }
    }
et pourtant tu continue derrière le send.
        xhr_object.send(data);   
        if(bouton == "ok")
            window.Windows.close(id_fenetre);
        else
            document.getElementById(bouton).disabled = true;

quoiqu'il arrive, avant même la réponse d'ajax,
le if (bouton... ) est exécuté

xhr_object.onreadystatechange = function() {
       if(xhr_object.readyState == 4) {
          var msg = xhr_object.responseText;
          if(msg != "")
                { msg_erreur(msg, style, 'erreur', '250', '130'); }
         else { traitement si la réponse est ok }

....

si c'est ce que tu attends !

Cordialement

           Bul [mon Site] [M'écrire]         
Messages postés
1782
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
14 janvier 2021
116
a mon avis la condition n'est jamais ateinte
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
1
Pourtant si car la fonction msg_erreur s'exécute bien.

Az
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
1
Je viens de tester ça et le message alert s'affiche bien!

    xhr_object.onreadystatechange = function() {
       if(xhr_object.readyState == 4) {
          var msg = xhr_object.responseText;
          if(msg != "") {
              msg_erreur(msg, style, 'erreur', '250', '130');
            alert('terte');
            return;
          }
       }
    }
   
Az
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
32
essai de mettre un return false;

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
1
Nickel!! c'est exactement ce que je voulais, j'étais justement entrain de tester cette solution ^^

Az