Bonjour,
Je rencontre un problème lors d'une action sur un element de ma page. Je suis pas très bon en js et j'aissaie de faire un peu comme en php, c'est à dire chainer les fonctions (pour une meilleur organisation) mais peut être que je m'y prend mal, du coup le résultat final c'est que je me retrouve avec ma variable = maFunction() = undefined alors que dans maFunction() j'ai bien une valeur...
Voici mon code
function setValue(id, object, type, data_name, reload, param_reload, methode){
var value,
UrlStr,
Url = document.location.href,
UrlParams = Url.indexOf('#'),
validate = false
;
if(UrlParams !== -1){
UrlStr = Url.substr(0, UrlParams);
}else{
UrlStr = Url;
}
if(type === 'check'){
console.log(object);
if(object.checked === true){
value = 1;
}else{
value = 0;
}
}else if(type === 'date'){
var dateFR = object.value;
var tabFR = dateFR.split('/');
tabFR.reverse();
var dateEN = tabFR.join('/');
value = dateEN;
object.value = dateFR;
}else{
value = object.value;
}
if(methode !== ''){
validate = validated(data_name, id, value);
console.log(validate);// Voici ma ligne undefined
}else{
validate = true;
}
}
function validated()
function validated(data_name, item_id, value){
if(data_name === 'date_envoie'){
$.ajax({
url : '/mon_url',
type : 'POST',
data : 'id=' + item_id + '&data=' + value,
dataType: 'json',
success: function(json) {
var error_date_envoie = document.getElementById('error_date_envoie'),
text_error_date_envoie = 'La date d\'envoie doit être antérieur à la date d\'accord';
;
//console.log(json);
if(json === 'false'){
error_date_envoie.innerText = text_error_date_envoie_conv_syndic;
if(error_date_envoie.classList.contains('display_none') === true){
error_date_envoie.classList.remove('display_none');
}
return 'false';
}else{
error_date_envoie.innerText = '';
if(error_date_envoie.classList.contains('display_none') === false){
error_date_envoie.classList.add('display_none');
}
return 'true';
}
},
error: function(json){
console.log(json);
return 'false';
}
});
}else{
return data_name;
}
}
là j'ai bien des return dans tout les cas donc je ne comprend pas ! json me retourne bien 'true' ou 'false', donc les class appliquées à mon element fonctionne bien, mais je n'arrive pas à récupérer la valeur 'true' ou 'false' dans ma function setValue()
Bonjour.
C'est tout à fait normal, étant donné que ta fonction validated fait une requête ajax, au moment ou ta variable validate est définie la requête n'est pas encore terminée, par conséquent tu n'as pas encore de retour, du coup ta variable ne peut être que undefined
.
Voici ce qui pourrait t'aider : Apprendre le JavaScript » Pour aller plus loin : Promise, Async & Await.
Bonjour Lartak,
Oui effectivement j'ai trouvé l'erreur mais j'essaie de trouver une solution. Je me tourne vers les promesses (je connais pas encore)...