Je reçois une erreur JavaScript vraiment étrange lorsque je lance ce code:
<script type = 'text/javascript'>
var ask = confirm('".$message."');
if (ask == false)
{
return false;
}
else
{
return true;
}
</script>
Dans la console JavaScript, il est écrit:
Syntax Error: Illegal return statement
Il se produit à return true;
et return false;
(Je répète ce javascript à partir d'une fonction php; le $message
variable est l’un des paramètres php)
Quel est le problème avec mon code?
return
n'a de sens que dans une fonction. Il n'y a pas de fonction dans votre code.
En outre, votre code est digne du Département des redondances. En supposant que vous le déplaciez pour une fonction appropriée, ce serait mieux:
return confirm(".json_encode($message).");
EDIT beaucoup plus tard: Code modifié pour utiliser json_encode
pour s'assurer que le contenu du message ne se casse pas uniquement à cause d'une apostrophe dans le message.
Si vous voulez retourner une valeur, placez votre déclaration dans la fonction
function my_function(){
return my_thing;
}
Le problème est avec la déclaration sur la 1ère ligne si vous essayez d'utiliser PHP
var ask = confirm ('".$message."');
SI vous essayez d’utiliser PHP vous devriez utiliser
var ask = confirm (<?php echo "'".$message."'" ?>); //now message with be the javascript string!!
dans l'instruction de retour javascript utilisée uniquement dans le bloc de fonction. Si vous essayez d'utiliser l'instruction return dans Independent, sinon, bloquez-le. Erreur de syntaxe: instruction retour illégale en JavaScript.
Voici mon exemple de code pour éviter une telle erreur:
<script type = 'text/javascript'>
(function(){
var ss= 'no';
if(getStatus(ss)){
alert('Status return true');
}else{
alert('Status return false');
}
function getStatus(ask){
if(ask=='yes')
{
return true;
}
else
{
return false;
}
}
})();
</script>
S'il vous plaît vérifier Jsfiddle exemple
où essayez-vous de retourner la valeur? console en dev outils est mieux pour le débogage
<script type = 'text/javascript'>
var ask = confirm('".$message."');
function answer(){
if(ask==false){
return false;
} else {
return true;
}
}
console.log("ask : ", ask);
console.log("answer : ", answer());
</script>
D'après mon expérience, le plus souvent, ce message d'erreur signifie que vous avez mis une accolade de fermeture accidentelle quelque part, laissant le reste de vos déclarations en dehors de la fonction.
Exemple:
function a() {
if (global_block) //syntax error is actually here - missing opening brace
return;
} //this unintentionally ends the function
if (global_somethingelse) {
//Chrome will show the error occurring here,
//but actually the error is in the previous statement
return;
}
//do something
}