如何传递多个参数javascript?

时间:2013-03-25 09:07:44

标签: php javascript

<?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>

这个明确的功能已在js中定义。当我传递一个变量时,它变得完美但是2个变量失败了。

4 个答案:

答案 0 :(得分: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>

但您也可以这样做以避免创建全局ab 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属性周围引用#&# 39; s值,该值包含/。 (如果值中包含/,则无法取消引号。)例如:

<script type=text/javascript>
<!-- Error here--^        -->

在值周围加上引号:

<script type="text/javascript">

...或者只是完全关闭type

<script>

...因为JavaScript是HTML5的script的官方默认值,并且无论如何一直是所有浏览器(甚至是IE)的默认设置。

答案 1 :(得分:0)

你是如何尝试运行该代码的?...我不明白这么清楚,因为我发现你正试图直接用javascript来使用php代码?

答案 2 :(得分: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&amp; $b因为那些不是数组。

答案 3 :(得分: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>