我发现自己处于一个奇怪的位置试图在javascript中放入一个字符串,这是在php中定义的。我要发布的代码不是真正的代码,而是我所处的情况。
$script = "
var someVar = \"<input type='text' onchange='callScript('problem here') />' \";
";
如你所见,我正在设置一个包含html元素的javascript变量。 html元素有一个onchange事件,它被设置为调用一个以字符串作为参数的函数。我该如何插入该参数?
答案 0 :(得分: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") />'
答案 1 :(得分:0)
尝试
$script = "
var someVar = \"<input type='text' onchange='callScript(\"problem here\")' />\" ";
答案 2 :(得分: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
答案 3 :(得分:0)
我认为如果你在将字符串中的addslashes()
插入变量之前调用$script = "var someVar = \"<input type='text' onchange='callScript(\\\"".addslashes($problem_here)."\\\") />' \";
,那么你应该可以避免任何可能的不安全字符,所以:
{{1}}
答案 4 :(得分:0)
一般来说,远离addslashes
。做Robin Winslow说的话(我是新来的,所以我想我不能直接回复)并使用json_encode
。
但是,你仍然需要在JS中使用html-escape你的字符串。如果您使用JS生成HTML,请查看jQuery的模板系统。