このコードを実行すると、本当に奇妙なJavaScriptエラーが発生します。
<script type = 'text/javascript'>
var ask = confirm('".$message."');
if (ask == false)
{
return false;
}
else
{
return true;
}
</script>
JavaScriptコンソールでは次のように表示されます。
Syntax Error: Illegal return statement
return true;
およびreturn false;
で発生します
(このjavascriptをphp関数からエコーしています。$message
変数はphpパラメーターの1つです)
私のコードの何が問題になっていますか?
return
は、関数内でのみ意味があります。コードに関数はありません。
また、あなたのコードは、冗長部門の部門の場合に価値があります。適切な機能に移動すると仮定すると、これはより良いでしょう:
return confirm(".json_encode($message).");
ずっと後で編集:json_encode
を使用するようにコードを変更し、メッセージのアポストロフィが原因でメッセージの内容が壊れないようにしました。
何らかの値を返したい場合は、ステートメントを関数でラップします
function my_function(){
return my_thing;
}
問題は、PHPを使用する場合の1行目のステートメントにあります
var ask = confirm ('".$message."');
PHPを使用する場合は、使用する必要があります
var ask = confirm (<?php echo "'".$message."'" ?>); //now message with be the javascript string!!
関数ブロック内でのみ使用されるjavascriptのreturnステートメント。独立した内部でreturnステートメントを使用しようとすると、ブロックされる場合は構文エラーをトリガーします:JavaScriptの不正なreturnステートメント
このようなエラーを回避するためのサンプルコードを次に示します。
<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>
Jsfiddle の例を確認してください
どこに値を返そうとしていますか?デバッグには開発ツールでコンソールする方が良い
<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>
私の経験では、ほとんどの場合、このエラーメッセージは、偶発的な閉じブレースをどこかに置き、残りのステートメントを関数の外に置いたことを意味します。
例:
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
}