我有以下代码: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函数。
感谢所有建议。提前谢谢。
答案 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包装在'
(单引号)中。
您可以使用其他两种更理想的选择
<input type="hidden">
并使用JavaScript获取值。这两种解决方案都避免将PHP直接嵌入到JS中。