2015-06-01 45 views
0

我想從我的PHP傳遞一些變量到javascript,它的工作正常,除了當我向函數調用添加特定變量時。有3個變量被傳遞,所有這些變量都與YouTube視頻相關。該ID正在從數據庫中檢索,另外兩個(標題和描述)正在使用來自YouTube的api的ID進行檢索。Javascript Uncaught由於傳遞變量而導致的語法錯誤

<a href="#" class="list-group-item" id="{{$vidID[$i]}}" onclick="updateVid('{{$vidID[$i]}}', '{{$title[$i]}}', '{{$desc[$i]}}test')"> 

我使用hogan模板,因此{{}}與帶有回顯的php標記相同。這個問題似乎只在將描述變量添加到調用時纔會發生。沒有它,另外兩個工作就很好。在做了一些研究之後,似乎這是由一個看不見的字符引起的,但我重新輸入了我的代碼以確保我的代碼不是問題。開發人員控制檯顯示說明變量的最後一行出現問題,因此似乎正在使用api中的不可見字符檢索描述。我只是試圖用js函數中的描述做一個簡單的提示。我怎樣才能擺脫這個角色?

回答

0

沒有看到實際的值,最明顯的問題是你的內容中的字符會破壞html和/或javascript函數調用。

直接在html中回聲變量就像這樣有點棘手,因爲你需要轉義的JavaScript,但也爲HTML。在這種情況下,你可以使用大概:

... '{{htmlspecialchars(json_encode($desc[$i]), ENT_QUOTES)}}test' ... 

json_encode通話可能會得到你一對額外的字符串括在雙引號的。

但是,請注意,將變量轉換爲javascript的最佳方式是直接在腳本塊中執行此操作 - 在中間不使用html的情況下 - 在php中使用json_encode。然後你可以確定任何數據都可以毫無問題地傳遞,並且你可以在javascript中解碼它以恢復你的結構(在數組和對象的情況下)。

+0

嘿。變量的內容因視頻而異,但基本上,您可以在常規YouTube視頻中找到該內容。其中一些包含鏈接到Twitter和東西,而其他人只有幾個詞。無論內容如何,​​他們都會給出這個錯誤。你的建議沒有奏效。你如何建議我使用json_encode。 $ desc變量是一個數組;我應該在這個變量上調用json_encode嗎?如果你給我一個小例子,將不勝感激。感謝回覆! –

+0

哎呀,我沒有正確地嘗試你的建議!我忘了在htmlspecialcharacters方法中包含json_encode。我已經標記了你的答案是正確的。謝謝!我仍然想知道這樣做的正確方法是什麼。 –

+0

@SagarDesai就像我說的,你應該跳過html步驟,並把所有的變量放在一個對象或數組中。您編碼的對象直接在'var my_object = JSON.parse(<?php echo json_encode($ my_vars);?>)'腳本塊中回顯出來。 – jeroen

相關問題