2012-11-28 82 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

可能是一個複製粘貼問題 –