2016-04-28 15 views
0

これは構文エラーですが、これはうまくいきましたが、構文が適切であるようにこれをどうすればいいのでしょうか。phpをjavascriptに出力するときに構文エラーが発生する

以下のコードは、Ajax呼び出しで送信する変数を準備しているスクリプトの一部です。スコープによっては、対応する変数をAjaxに渡す必要があります。

問題点は、javascriptの観点からは、各スコープのphp変数のみが定義されているようです。

else if条件が満たされていないと解析しようとしないと思いますが、明らかにそうではありません。 php変数$ scopeは常に定義されています。あなたがPHPからJSに出力している値をexpecingしているあなたのコードの見た目から

    var scope_var = <br /> 
<b>Notice</b>: Undefined variable: brand in <b>/Applications/MAMP/htdocs/my_site/my_script.php</b> on line <b>1049</b><br />null; 

おかげ

 var scope = <?php echo json_encode($scope) ;?>; 
     if (scope == 'all') {var scope_var = 'all';} 
     else if (scope == 'brands') {var scope_var = <?php echo json_encode($brand) ;?>;} 
     else if (scope == 'cities') {var scope_var = <?php echo json_encode($city) ;?>;} 
     else if (scope == 'models') {var scope_var = <?php echo json_encode($model) ;?>;} 
     else if (scope == 'prange') {var scope_var = <?php echo json_encode($used_prange_low) . '|' . json_encode($used_prange_high) ;?>;} 
+0

シングルクォートを使用するvar scope_var = '<?php echo json_encode($ brand);?>'; –

+0

$ brandが定義されていますか? if文の前に印刷してみてください。 –

答えて

1

放火魔とChromeの開発ツールの両方がエラーを投げています文字列として受け取る。この場合、すべてのPHP文を引用符で囲む必要があります。これを試してみてください:

var scope = '<?php echo json_encode($scope); ?>'; 
if (scope == 'all') { 
    var scope_var = 'all'; 
} else if (scope == 'brands') { 
    var scope_var = '<?php echo json_encode($brand); ?>'; 
} else if (scope == 'cities') { 
    var scope_var = '<?php echo json_encode($city); ?>'; 
} else if (scope == 'models') { 
    var scope_var = '<?php echo json_encode($model); ?>'; 
} else if (scope == 'prange') { 
    var scope_var = '<?php echo json_encode($used_prange_low) . ' | ' . json_encode($used_prange_high); ?>'; 
} 

switch文が複数else if条件より良いあなたのニーズに合うかもしれないことに注意。

+0

ありがとう、引用符を追加するだけ、エラーを変更するか、またはむしろ通知します。これで、 "未終了の文字列リテラル"になります。それで解決しないでしょう。しかし、私はスイッチのことに興味があるでしょう。それはより有望に聞こえる。 – BernardA

+0

スイッチでも切断されません。それでも同じエラー。条件が満たされなくても変数が最初に定義されていないと処理できないようです – BernardA

+1

json_encodeのJSON_HEX_QUOTオプションを使用できます。ここでは、json_encode($ scope、JSON_HEX_QUOT)の例を示します。それは引用符を管理し、 "未終了の文字列リテラル"問題が解決されます。それが助けてくれることを願って。 – BugCoder

関連する問題