1

我犯了一些愚蠢的错误,但无法弄清楚我做了什么。

我正在尝试测试从 PHP 到 Javascript 的传递变量,如果它是一个数组,json_encode

我的文件是一个 PHP 文件,即 .php

似乎导致我添加到原始 PHP 中的错误的 php 代码行,它工作正常

<?php

$php_var = 'lol';
$php_array = array ();
$php_array["lady"] = "mary";
$php_array["gent"] = "joseph";
echo is_array($php_array) ? json_encode($php_array) : $php_array;  // same as faulty line in javascript
?>

<html>
<body>

<script type="text/javascript" charset="utf-8">

var php_var = "<?php if (is_array($php_var)) {echo json_encode($php_var); } else { echo $php_var;}; ?>";
document.write(php_var + ' ifElse<br>');

// THE FOLLOWING LINE GIVES  Uncaught SyntaxError: Unexpected identifier 
var php_var2 = "<?php echo is_array($php_array) ? json_encode($php_array) : $php_array; ?>";

document.write (php_var2 + ' EitherOR<br>');

alert(php_var + php_array);

</script>
<h1> Testing Jscript variables</h1>
</body>
</html>
4

3 回答 3

2

正如您所指定的,错误位于:

var php_var2 = "<?php echo is_array($php_array) ? json_encode($php_array) : $php_array; ?>";

该错误可能是由于您在 Javascript 中使用双引号("")使用单引号。('')

这可能会解决您的错误: var php_var2 = '<?php echo is_array($php_array) ? json_encode($php_array) : $php_array; ?>';

Object或者,您可以使用 JSON 字符串直接创建 Javascript eval()

http://jsfiddle.net/jduGp/

于 2013-01-25T11:47:50.570 回答
0

试试这个代码。如下所示替换两行。

var php_var = <?php if (is_array($php_var)) {echo json_encode($php_var); } else { echo $php_var;}; ?>;

var php_var2 = <?php echo is_array($php_array) ? json_encode($php_array) : $php_array; ?>;
于 2013-01-25T11:36:54.453 回答
0

我是这样做的

<?php

$php_var = 'lol';
$php_array = array ();
$php_array["lady"] = "mary";
$php_array["gent"] = "joseph";
?>

<html>
<body>

<script type="text/javascript" charset="utf-8">

var php_var = <?php if (is_array($php_var)) {echo json_encode($php_var); } else { echo '"' . $php_var . '"';} ?>;
document.write(php_var + ' ifElse<br>');

// THE FOLLOWING LINE GIVES  Uncaught SyntaxError: Unexpected identifier
var php_var2 = <?php echo is_array($php_array) ? json_encode($php_array) : $php_array; ?>;

document.write (php_var2 + ' EitherOR<br>');

alert(php_var);

</script>
<h1> Testing Jscript variables</h1>
</body>
</html>

当Javascript不知道该变量时,不确定为什么要尝试警告php_array。除非您输出字符串,否则您也不需要引号。如果你在一个对象周围加上引号,Javascript 会认为它是一个字符串。

于 2013-01-25T11:43:11.757 回答