将特殊字符传递给javascript函数

时间:2014-10-12 04:37:08

标签: javascript php

我有以下代码:opener.postConditionPostCure("<?php echo the_field('cure_description'); ?>")

在某些情况下,the_field()会返回&#39; &#34; )人物。我相信这些角色会抛出错误。我尝试使用js fn escape()函数以及php fn rawurlencode()作为:

opener.postConditionPostCure(escape("<?php echo the_field('cure_description'); ?>"))
opener.postConditionPostCure("<?php echo rawurlencode(the_field('cure_description')); ?>")

无济于事。

我希望将the_field()返回的整个字符串传递给postConditionPostCure函数。

感谢所有建议。提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用PHP函数addslashes(),它将逃避那些导致js混乱的字符。

opener.postConditionPostCure("<?php echo addslashes(the_field('cure_description')); ?>")

答案 1 :(得分:1)

这太可怕了。

永远不会将动态输出直接集成到这样的javascript中。

Read the plethora of reasons why this is a terrible practice here


但是,无论如何你都要这样做,至少首先正确编码JavaScript值。

var json = '<?php echo json_encode(the_field("cure_description"), JSON_HEX_APOS) ?>';

var cureDescription = JSON.parse(json);

opener.postConditionPostCure(cureDescription);

我正在使用json_encode标记调用JSON_HEX_APOS,因为我在JavaScript中将JSON包装在'(单引号)中。


您可以使用其他两种更理想的选择

  1. 使用ajax获取所需的值
  2. 渲染<input type="hidden">并使用JavaScript获取值。
  3. 这两种解决方案都避免将PHP直接嵌入到JS中。