2

次のコードで構文エラーが発生しました。コードの最初の行を取り出すと、アラートが表示されます。私の脳はほとんど死んでいて、その理由がわかりません。助けてください。どうもありがとう。

JS

var rss = <?php echo json_encode($test); ?>;

alert("Hello World");

更新しました

html

  <?php 

    $test=get_array(); 

   //the $test is a multi-dimention array.

  ?>


<script type="text/javascript" src="js/slideshow.js"></script>
4

4 に答える 4

5

json_encode失敗すると FALSE を返すため、失敗した場合echo falseは何も出力されません。

そのため、コードは以下になり、構文エラーが発生します。

var rss = ;

alert("Hello World");

編集: 更新された編集から、理由は次のとおり です。jsファイルにphpコードを書くことはできません。

js ファイルでその変数が必要な場合は、最初にグローバル変数に割り当てます。

<script type="text/javascript">
  var rss = <?php echo json_encode($test); ?>;
</script>
<script type="text/javascript" src="js/slideshow.js"></script>
于 2012-07-05T05:17:18.177 に答える
2

エラーを回避するには、コードを次のようにする必要があります。

var rss = <?php echo json_encode($test) ? json_encode($test) : "''"; ?>;
alert("Hello World");

json_encodeが返されたとしてもfalse、コードは次のようになります。

var rss = '';
alert("Hello World");
于 2012-07-05T05:23:47.523 に答える
1

.jsファイルでは、PHPは機能しません。拡張子が.phpのファイルでのみ機能します。JSコードをPHPページに配置します。その後、それは動作します。

于 2012-07-05T05:33:44.657 に答える
1

これは、次の理由により、JavaScript が致命的なエラーをスローし、現在のスクリプトの実行を停止するためです。

var rss = <?php echo json_encode($test); ?>; 

問題は、これが有効でない JSON 文字列を返す可能性があり、新しい例外がスローされることです。

できること:

まず、PHP から取得した文字列が実際に有効かどうかを判断する必要があります。try/catchJSON メソッドは通常エラーをスローするため、この var をブロックに入れるだけです。

try {

  var rss = <?php echo json_encode($your_array); ?>;

} catch(e){

  alert('Invalid JSON string');
}

PHP では、無効な JSON 文字列を javaScipt に送り返すことを防ぐために有効かどうかも確認してください。

于 2012-07-05T05:23:18.883 に答える