在PHP中定义的javascript中插入一个字符串

时间:2011-08-19 22:35:16

标签: php javascript string

我发现自己处于一个奇怪的位置试图在javascript中放入一个字符串,这是在php中定义的。我要发布的代码不是真正的代码,而是我所处的情况。

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

如你所见,我正在设置一个包含html元素的javascript变量。 html元素有一个onchange事件,它被设置为调用一个以字符串作为参数的函数。我该如何插入该参数?

5 个答案:

答案 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的模板系统。