2017-06-15 1 views
0

Je fais ma zone utilisateur de mon site dans un popup et je dois utiliser les requêtes AJAX. Je souhaite afficher le bouton Déconnecter uniquement si un utilisateur est connecté.établir une connexion avec 2 demandes AJAX est possible?

Ceci est ma demande pour connecter un utilisateur. Il fonctionne pour le moment et je veux juste après mon innerHTML dans mon pop-up pour remplacer la classe de mon bouton fermer la session (il sera affiché)

function requestSI() { 
var xhr = getXMLHttpRequest(); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { 
     document.getElementById("popup_login").innerHTML = "<img src='img/index/cross.png' id='close' onclick ='hidelogin()' /><div id='color2'></div><h2 id=login_title>"; 
     document.getElementById("popup_login").innerHTML += this.responseText; 
     if (isUserLogged()){ 
      alert("test function"); 
      var x = document.getElementById("log_off"); 
      x.classList.remove("inative_logoff"); 
      x.classList.add("active_logoff"); 
     } 
    } 
}; 

var login_fieldSI = encodeURIComponent(document.getElementById("login_fieldSI").value); 
var password_fieldSI = encodeURIComponent(document.getElementById("password_fieldSI").value); 

xhr.open("POST", "php/login.php", true); 
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
xhr.send("Login_fieldSI="+login_fieldSI+"&Password_fieldSI="+password_fieldSI); 
} 

donc ma fonction isUserLogged fait aussi une demande AJAX pour savoir si un utilisateur est connecté

function isUserLogged(){ 
    var xhr = getXMLHttpRequest(); 
    xhr.onreadystatechange = function() { 
     if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { 
      alert(this.responseText); 
      if (this.responseText == "true"){ 
       alert("ok"); 
       return true; 
      } 
      else { 
       return false; 
      } 
     } 
    }; 
    xhr.open("POST", "php/is_user_connected.php", true); 
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xhr.send(null); 
} 

Je ne alertes pour les tests

alert(this.responseText) -> affichage vrai

alert ("ok") -> affichage

mais mon alert('test function') dans ma fonction requestSI() ne pas afficher ..

Je pense que je manque quelque chose, mais je ne sais pas quoi .. Pouvez-vous me aider?

+0

double possible de [demander de l'aide pour la demande de AJAX fonction de rappel] (https://stackoverflow.com/questions/44570142/ask-for-help-for- callback fonction ajax-demande) – Liam

Répondre

0
 function requestSI() { 
    var xhr = getXMLHttpRequest(); 
    xhr.onreadystatechange = function() { 
     if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { 
      document.getElementById("popup_login").innerHTML = "<img src='img/index/cross.png' id='close' onclick ='hidelogin()' /><div id='color2'></div><h2 id=login_title>"; 
      document.getElementById("popup_login").innerHTML += this.responseText; 
    isUserLogged();   
     } 
    }; 

    var login_fieldSI = encodeURIComponent(document.getElementById("login_fieldSI").value); 
    var password_fieldSI = encodeURIComponent(document.getElementById("password_fieldSI").value); 

    xhr.open("POST", "php/login.php", true); 
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xhr.send("Login_fieldSI="+login_fieldSI+"&Password_fieldSI="+password_fieldSI); 
    } 
    ---------- 
    function isUserLogged(){ 
     var xhr = getXMLHttpRequest(); 
     xhr.onreadystatechange = function() { 
      if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { 
       alert(this.responseText); 
       if (this.responseText == "true"){ 
        alert("ok");      
       alert("test function"); 
       var x = document.getElementById("log_off"); 
       x.classList.remove("inative_logoff"); 
       x.classList.add("active_logoff");     
       } 
       else { 
        //do your other code.. 
       } 
      } 
     }; 
     xhr.open("POST", "php/is_user_connected.php", true); 
     xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
     xhr.send(null); 
    } 
+0

@Melinsuna S'il vous plaît essayer this..and me faire savoir qu'il fonctionne ou non .. – KB1788

+0

c'est le travail !! parfait! Merci beaucoup :) – Melinsuna

0

Vous pouvez if (isUserLogged() == true){ à la place if (isUserLogged()){

+0

déjà essayé .. il ne fonctionne pas .. – Melinsuna

+0

Put 'alerte (isUserLogged())' avant si (isUserLogged() == true) {........ ce ça se voit? – KB1788

+0

-> undefined .... mais cette alerte s'affiche avant l'alerte (this.responseText) et les alertes ('ok') – Melinsuna