2016-05-05 75 views
-2

我的總體目標是將一組數字從php傳遞給js。我看到其他地方的解決方案只是放在JavaScript中,所以我一直在嘗試。但是,我不斷收到錯誤「意外令牌?」當我添加與php的線。我已檢查$ ztable實際上是我想要的變量,它確實存在。下面是我嘗試過的三個不同的例子,它們都返回了相同的錯誤。我嘗試了一些其他方法從PHP獲取變量的JavaScript以及但沒有一個似乎適合我。如果我寫的代碼有問題,請告訴我,或者如果有另一種傳輸變量的簡單方法,我很樂意聽到它。通過我的應用程序,變量只被傳遞一次,所以速度不是問題,也不是安全(出於不同的原因)。將變量從PHP傳遞給Javascript:意外的令牌?

<script> 
ztable = new array(<?php echo json_encode($ztable); ?>); 
....other unrelated code..... 
</script> 

<script> 
var ztable = <?php echo json_encode($ztable); ?>; 
....other unrelated code..... 
</script> 

<script> 
var ztable = <?php echo $ztable; ?>; 
....other unrelated code..... 
</script> 

編輯:我不使用jQuery和我的PHP代碼非常簡單,它只是基於沿

$ ztable = 0.001,0.003線輸入的用戶的數字陣列,0.006,0.01,0.02,0.04,0.07,0.11,0.16,0.23,0.31,0.4,0.5,0.4,0.31,0.23,0.16,0.11,0.07,0.04,0.02,0.01,0.006,0.003,0.001];其中,所述組合物包含一種或多種化合物。

+0

剛剛閱讀文檔[這裏](http://php.net/json_encode) – Terminus

+0

顯示您的php代碼也 –

+0

你使用jQuery嗎? – Mike

回答

0

第二個例子工作得很好。這工作,我認爲這是你可能想要做的。

<script> 
var ztable = <?php echo json_encode($ztable); ?>; 
....other unrelated code..... 
</script> 

這裏可能存在的問題可能是功能json_encode is not defined。我建議先檢查一下。

這裏要做的另一件事是檢查PHP的輸出,如果仍然無法正常顯示它在你的問題。

的第三示例看起來破碎

<script> 
var ztable = <?php echo $ztable; ?>; 
....other unrelated code..... 
</script> 

$ztable是一個數組。你期望如何迴應它?這帶來了警告和結果看起來像

<script> 
    var ztable = PHP Notice: Array to string conversion in /home/victor/Projects/emailmarketing/rank/code.php on line 14 
Array; 
</script> 

即使警告不顯示結果看起來不是一個有效的JS代碼。

+0

這實際上是一個問題。由於我的「意外令牌」,我沒有設法讓代碼運行那麼遠。錯誤。我將不得不繼續尋找將數組轉換爲JavaScript的方法。 – Jicnon

+0

@Jicnon對不起,我看錯了你的問題。 –

+0

@Jicnon是PHP處理的文件嗎? –

1

我認爲你正在尋找的東西,如:

<script type="application/javascript"> 
    var ztable = JSON.parse(<?php echo json_encode(isset($ztable) ? $ztable : array()); ?>); 
    //.... more stuff 
</script> 

似乎你的例子並不將JSON從javascript中的字符串轉換。

如果沒有定義$ztable,這也會提供一個默認的空數組,這將會優雅地失敗。

+0

當我嘗試使用您提供的代碼行時,我仍然收到錯誤「意外令牌?」這使得它始終得到一個null數組,即使我知道$ ztable已經設置。但假設我可以解決這個錯誤,這行代碼看起來好像很有用。 – Jicnon

+0

放置'<?php echo'

' . print_r($ztable, 1) . '
';死(); ?>'在JavaScript標記之前在渲染前立即檢查輸出。如果您有奇怪的變量問題,請在調用輸出前立即檢查輸出以排除其他影響。如果您在代碼中的其他地方通過引用傳遞,這可能也會導致難以調試的問題。 – mopsyd