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

这是因为 JavaScript 抛出致命错误并停止当前脚本执行,原因是:

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

问题是这可能会返回非有效的 JSON 字符串并引发新的异常,

你可以做什么:

首先你应该确定你从 PHP 得到的字符串是否真的有效。由于 JSON 方法通常会抛出错误,因此您可以简单地将这个 var 放入try/catch块中

try {

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

} catch(e){

  alert('Invalid JSON string');
}

在 PHP 中,还请检查它是否有效,以防止将无效的 JSON 字符串发送回 javaScipt

于 2012-07-05T05:23:18.883 回答
1

在 .js 文件中,PHP 不起作用。它仅适用于扩展名为 .php 的文件。将你的 JS 代码放在 PHP 页面中;然后它工作。

于 2012-07-05T05:33:44.657 回答