-4
<?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 个变量会失败。

4

4 回答 4

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>

但您也可以这样做以避免创建这些全局变量abJavaScript 变量:

<?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 是scriptHTML5 的官方默认设置,并且始终是所有浏览器(甚至 IE)的默认设置。

于 2013-03-25T09:11:21.413 回答
0

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?

于 2013-03-25T09:13:50.830 回答
0

尝试这个:

<?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>
于 2013-03-25T09:47:38.950 回答
0

也许,你打算传递一个像这样的对象。

<?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因为那些不是数组。

于 2013-03-25T09:16:56.160 回答