我犯了一些愚蠢的错误,但无法弄清楚我做了什么。
我正在尝试测试从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>
答案 0 :(得分: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()
。
答案 1 :(得分: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; ?>;
答案 2 :(得分: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会认为它是一个字符串。