2012-11-28 55 views
1

这是我的PHP代码:我怎样才能调用JavaScript函数使用PHP代码PHP变量传递

<?php 
    $typeid = 65; 
    $subledgerid = 'subledger'.$typeid; 
    $loadledger = 'loadledgers'; 
    ?> 
    <script type="text/javascript">view_subledger('<?php echo $subledgerid;?>',<?php echo $typeid;?>,'<?php echo $loadledger;?>');</script> 

这不是调用view_subledger()

但是,当我打电话这样的事情会很好地工作:

<script type="text/javascript">view_subledger('subledger65',65,'loadledgers');</script> 

我怎么能叫呢?

+0

向我们展示的输出结果(网页源代码)。 check line 7: RezaSh

+0

'$ subledgerid;'numeric?比你错过前缀'subledger'。无论如何,向我们发布您在使用PHP进行stuf时所拥有的HTML输出。 –

+1

最后一行的右括号不匹配。这个代码在文件中是什么? – Darkzaelus

回答

2

下面是做到这一点的最安全的方式:

<?php 

$typeid = 65; 
$subledgerid = 'subledger'.$typeid; 
$loadledger = 'loadledgers'; 

?> 

<script type="text/javascript"> 
view_subledger.apply(window, <?php print json_encode(array(
    $typeid, 
    $subledgerid, 
    $loadledger 
)); ?>); 
</script> 

产生下面的代码:

<script type="text/javascript"> 
view_subledger.apply(window, [65,"subledger65","loadledgers"]); 
</script> 

json_encode()将确保变量被正确转义并且使用.apply()方法可以将参数数组传递给JS函数。

另外建议版本:

<?php 
$typeid = 65; 
$subledgerid = 'subledger'.$typeid; 
$loadledger = 'loadledgers'; 
$param_str = implode(', ', array_map('json_encode', array(
    $typeid, 
    $subledgerid, 
    $loadledger 
))); 
?> 

<script type="text/javascript"> 
view_subledger(<?php print $param_str; ?>); 
</script> 

生成如下:

<script type="text/javascript"> 
view_subledger(65, "subledger65", "loadledgers"); 
</script> 
+1

'window'应该是传入的'this'对象。 –

+0

+1谢谢,改变了。 – ioseb

+0

我也建议在这种情况下将方法签名更改为'view_subledger(data)'。 –

0

为什么<?php } ?>之后的脚本?应该是这样的:

<?php 
$typeid = 65; 
$subledgerid = 'subledger'.$typeid; 
$loadledger = 'loadledgers'; 
?> 
<script type="text/javascript">view_subledger('<?php echo $subledgerid;?>',<?php echo $typeid;?>,'<?php echo $loadledger;?>');</script> 
+0

可能是一个复制粘贴问题 –

+0

其复制粘贴问题... – Kichu

0

这是您在文件中的所有代码? 所有这些看起来都不错,只要$ subledgerid,$ typeid,$ loadledger都是正确的。 但是这条线呢?

<?php } ?> 

它必须崩溃的脚本

+0

可能是一个复制粘贴问题 –