Bonjour,

J'ai codé un HTML, avec un FORM contenant trois éléments INPUT (type text), et deux autres INPUT: Connecter (type SUBMIT) et un Initialiser formulaire ( type RESET).

Un click sur envoyer, doit me permettre de me connecteur sur une API

Pour ne pas utiliser de variables globales, j'utilise une IIFE :

La fonction GetXMLHttpRequest me renvoi un objet XMLHttpRequest, et identifiant.value,mdp.value,codeEntreprise.value récupèrent bien les valeurs saisies dans les INPUT du formulaire.
Le gestionnaire d'évènement formConnect attend le click sur Connecter qui appelle la fonction connecter avec en argument : xhr, et le contenu des trois INPUT de type text.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
(function() {
	var xhr=getXMLHttpRequest();
	var formConnect=document.getElementById('formConnect');
	var identifiant=document.querySelector("input[name='identifiant']"),
	codeEntreprise=document.querySelector("input[name='codeEntreprise']"),
	mdp=document.querySelector("input[name='mdp']");
	//
	formConnect.addEventListener('submit',function(){
	connecter(xhr,identifiant.value,mdp.value,codeEntreprise.value);	
	});
	//
}());
ci après le script de connecter :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
function connecter(xhr,admin,mdp,codeEntreprise){
var ident='{"user": "'+admin+'","password": "'+mdp+'","company": "'+codeEntreprise+'"}'
xhr.open( "POST", 'https://xxxxxxxxx',  false); 
xhr.setRequestHeader('Accept','application/json');
xhr.setRequestHeader('Content-Type','application/json');
//
xhr.onreadystatechange  = function() 
{ 
    if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
            alert(xhr.responseText); // Données textuelles récupérées
    } else {
    	alert('erreur');
    }
};   
//
xhr.send(ident); 	
}
Alors voilà mon problème : en ligne 4 je suis obligé de mettre à "false" le dernier argument de la méthode open, je suis donc dans le mode synchrone (attente fin du script).
J'ai codé mon script suivant car j'ai je ne veux pas utiliser de variables globales. Le fait de mettre "true", en ligne 4 fait que l'évènement xhr.onreadystatechange n'est jamais déclenché.
Ma question est la suivante : y a t'il un moyen de passer en mode asynchrone ?

merci