Bonjour,

je me lance depuis peu dans la librairie jQuery et son object $.Deferred() et je me suis pris la tête pendant un moment avec la situation suivante :

J'ai une méthode asynchrone que j'appelle 3 fois de suite de manière chainée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
var u = $("#username").val();
var s = $("#server").val();
var p = $("#pwd").val();
var r = $("#recipient").val();
save("username",u)
	.then(function() {return save("server",s);})
	.then(function() {return save("pwd",p);})
	.then(function() {return save("recipient",r);})
	.then($("#mycontent").load("main.html"));
J'ai du sortir de la fonction les appels à val (lignes 2 à 5) car sinon val() me retournait toujours undefined.

Sauf que pour la fonction load (le pendant de la fonction save !!), j'ai ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
load("username","")
	.then(function(){ return load("server",""); })
	.then(function(){ return load("pwd",""); })
	.then(function(){ return load("recipient",""); });
avec dedans un bout de code de ce genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
search.then(
	function(result){
		if (result.length > 0){
			console.debug(_name + " found ! (" + result[0].json["value"] + ")");
			$("#" + _name).val(result[0].json["value"]);
			def.resolve();
		}
et là l'appel à val(xxx) fonctionne !

Ma question à deux balles est donc "quand la fonction val() est elle capable de voir mon arbre DOM ?" et les questions corollaires : quand retourne t elle "" ou undefined (cf. ma réponse du dessous)