2011-08-19 25 views
0

我剛剛發現自己處於一個奇怪的位置,試圖在javascript中定義一個字符串,該字符串在php中定義。我要發佈的代碼是不實際的代碼,但它的情況我在。在PHP中定義的javascript內插入字符串

$script = " 
var someVar = \"<input type='text' onchange='callScript('problem here') />' \"; 
"; 

所以你看,我設置的是在它的HTML元素javascript變量。 html元素具有一個onchange事件,該事件被設置爲調用將字符串作爲參數的函數。我將如何插入該參數?

回答

0

我認爲,如果你將其插入變量之前的字符串調用addslashes(),你應該罰款,以逃避任何可能不安全的字符,所以:

$script = "var someVar = \"<input type='text' onchange='callScript(\\\"".addslashes($problem_here)."\\\") />' \"; 
+0

中被切斷了,這完全解決了,謝謝:) – kennypu

0

使用String.fromCharCode

$script = " 
var someVar = \"<input type='text' onchange='callScript(\" + String.fromCharCode(34) + \"problem here\" + String.fromCharCode(34) + \") />' \"; 
"; 

生成的JavaScript將是:

var someVar = "<input type='text' onchange='callScript(" + String.fromCharCode(34) + "problem here" + String.fromCharCode(34) + ") />' \"; 

其計算結果爲someVar是字符串

<input type='text' onchange='callScript("problem here") />' 
0

嘗試

$script = " 
var someVar = \"<input type='text' onchange='callScript(\"problem here\")' />\" "; 
+0

這將無法正常工作,因爲someVar的字符串在調用腳本 – kennypu

0

理想的情況下你的JavaScript將是一個視圖文件中,這樣你就不會用PHP打印出來,各地的其他方式:或者

var jsVar = <?php echo json _encode($phpstring); ?>; 

短:

var jsVar = <?=json_encode($phpstring)?>; 

的Json編碼將確保字符串打印的方式會被JS正確讀取。 http://php.net/manual/en/function.json-encode.php

0

一般來說,從addslashes遠離。做什麼羅賓溫斯洛說(我在這裏是新的,所以我想我不能直接回復),並使用json_encode

但是,你仍然需要在JS中使用html轉義你的那個字符串。如果您使用JS生成HTML,請查看jQuery的模板系統。

相關問題