Une fonction qui retourne toujours undefined
dd27
-
dd27 -
dd27 -
Bonjour, si quelqu'un peu m'aider, ce serai cool.
Voila je débute en programation et j'ai un souci avec cette fonction:
comment son nom l'indique elle sert à verifier l'existance d'un fichier. Le alert m'affiche bien la bonne réponse, donc pas de problème coté PHP. En revanche si je fais:
j'obtiens un joli undefined alors que je devrais obtenir 11 si le fichier existe et 22 dans le cas contraire.
Pourquoi ce script ne fonctionne t-il pas?
Merci à vous.
Voila je débute en programation et j'ai un souci avec cette fonction:
function file_exists(url) { var xhr = new XMLHttpRequest(); xhr.open('GET', 'ajouCatPHP.php?file_exist='+url); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200) { alert('result funcJS ligne 32 => '+xhr.responseText); return xhr.responseText; } } xhr.send(null); }
comment son nom l'indique elle sert à verifier l'existance d'un fichier. Le alert m'affiche bien la bonne réponse, donc pas de problème coté PHP. En revanche si je fais:
alert(file_exists(unUrlBidon));
j'obtiens un joli undefined alors que je devrais obtenir 11 si le fichier existe et 22 dans le cas contraire.
Pourquoi ce script ne fonctionne t-il pas?
Merci à vous.
A voir également:
- Une fonction qui retourne toujours undefined
- Fonction si et - Guide
- Ecran retourne - Guide
- Comment retourner une video - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
2 réponses
Bonjour,
Tu utilises l'ajax en asynchrone....
Je pense qu'il faut le passer en synchrone
Tu utilises l'ajax en asynchrone....
En javascript, tous les appels AJAX sont asynchrones, c'est-à-dire que l'exécution du Javascript n'est pas bloquée en attendant la réponse du serveur. Lors de chaque appel AJAX, on indique une fonction callback en javascript, et cette fonction sera appelée par le moteur javascript du navigateur lorsque celui-ci aura reçu la réponse du serveur.
Je pense qu'il faut le passer en synchrone
var fexist = false; function file_exists(url) { var xhr = new XMLHttpRequest(); xhr.open('GET', 'ajouCatPHP.php?file_exist='+url,false); //le false force en SYNCHRONE xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200){ alert('result funcJS ligne 32 => '+xhr.responseText); return xhr.responseText; } } xhr.send(null); }
Si vous avez d'autre idée je suis preneur.
Merci
Essaye ça pour voir ce que tu obtiens:
désolé, meme topo, j'ai toujours indefined en retour le alert('Une erreur s\'est produite'); s'affiche, mais c'est normal puisqu'il y a 4 étapes lors de la transmitions de données
A mon avis si alert(file_exists(unUrlBidon)); affiche undefined, c'est par se que le alert est executé avant que la fonction ne soit terminée d'etre exécutée
donc comment faire en sorte que mon alert(file_exists(unUrlBidon)); soit éxécuté une fois que ma fonction file_exist à fini sont boulot?