<?php
$a ='a';
$b='b';
?>
<script type="text/javascript">
var a=<?php json_encode($a); ?>;
var b=<?php json_encode($b); ?>;
window.parent.clear(a,b);
</script>
这个 clear 函数已经在 js 中定义了。当我传递一个变量时,它会完美,但有 2 个变量会失败。
<?php
$a ='a';
$b='b';
?>
<script type="text/javascript">
var a=<?php json_encode($a); ?>;
var b=<?php json_encode($b); ?>;
window.parent.clear(a,b);
</script>
这个 clear 函数已经在 js 中定义了。当我传递一个变量时,它会完美,但有 2 个变量会失败。
即使使用单个参数,我也看不出它是如何工作的,因为您的json_encode
调用是在 JavaScript 代码中,而不是在 PHP 中。
这是最小更改版本:
<?php
$a ='a';
$b='b';
?>
<script type=text/javascript>
var a=<?php echo json_encode($a)?>;
var b=<?php echo json_encode($b)?>;
window.parent.clear(a,b);
</script>
但您也可以这样做以避免创建这些全局变量a
和b
JavaScript 变量:
<?php
$a ='a';
$b='b';
?>
<script type=text/javascript>
window.parent.clear(
<?php echo json_encode($a); ?>,
<?php echo json_encode($b); ?>
);
</script>
(我假设这些值是占位符,'a'
而'b'
不是您的实际数据。)
或者,如果您使用短标签:
<?php
$a ='a';
$b='b';
?>
<script type=text/javascript>
window.parent.clear(
<?=json_encode($a)?>,
<?=json_encode($b)?>
);
</script>
...但很多人没有,看起来你不是。
旁注:您的script
标签无效(尽管如果大多数浏览器接受它,我不会感到惊讶),因为您在属性值周围没有引号type
,并且该值包含/
. (如果值中包含 a,则不能省略引号/
。)例如:
<script type=text/javascript>
<!-- Error here--^ -->
要么在值周围加上引号:
<script type="text/javascript">
...或者type
完全关闭:
<script>
...因为 JavaScript 是script
HTML5 的官方默认设置,并且始终是所有浏览器(甚至 IE)的默认设置。
How are you trying to run that code?...i don't understand so clearly because I see that you're trying to use php code directly with javascript?
尝试这个:
<?php
$a = array('firstVal' => 'a');
$b= array('secondVal' => 'b');
?>
<script type="text/javascript">
var a=<?php echo json_encode($a); ?>;
var b=<?php echo json_encode($b); ?>;
console.log(a.firstVal);
console.log(b.secondVal);
window.parent.clear(a,b);
</script>
也许,你打算传递一个像这样的对象。
<?php
$a = array('a','b');
?>
<script type=text/javascript>
var a=<?=json_encode($a)?>;
clear(a);
</script>
如果您使用:
<?php
$a ='a';
$b='b';
?>
你不能 json_encode $a
&$b
因为那些不是数组。