ACF提供了一个语法错误意外标记<

时间:2017-07-23 作者:baswijdenesdotcom

我正在使用ACF插件,总的来说,它工作得很好。

除了一小部分:

我在页面上有一个WYSIWYG文本框,我在其中添加了一些输入,但当我查看控制台时,我得到了一个意外的标记<;错误:

<?php the_field(\'correctoutput\'); ?>
当我尝试使用以下部分时,它只是中断:

<?php echo the_field(\'correctoutput\'); ?>
当我使用时,它也会断裂:

<?php echo json_encode the_field(\'correctoutput\'); ?>
这完全打破了页面:

<?php get_field(\'correctoutput\'); ?>
正确时,应在div中添加一些文本:

 $(\'#correcto\').innerHTML (<?php the_field(\'correctoutput\'); ?>);
我也用过。文本

它工作的唯一方法是在变量中捕获它:

<?php $correctoutput = get_post_meta( get_the_ID(), \'correctoutput\', true ); 
?>
然后输出:

<?php echo json_encode ($correctoutput); ?>
但这将删除<p></p> 标记。。。这也是问题所在。

2 个回复
SO网友:Johansson

在输出其他代码之前,应该先转义内容。这里最可能发生的事情是这样的:

$(\'correcto\').innerHTML(\'bla bla <a href=\'http://example.com\'>some link</a>\');
或者类似上面的内容,这将破坏语法。通过使用esc_html 您可以解决此问题:

$(\'#correcto\').innerHTML (\'<?php echo esc_html( get_field("correctoutput") ); ?>\');
两个附加注释the_field 响应字段的值。你不需要另一个Therecho。如果要返回值,请使用get_field 取而代之的是json_encode( get_field(\'correctoutput\') ); (是的,get_field, 不the_field! )

SO网友:Jacob Peattie

innerHTML的内容缺少引号。

如果correctoutput为<div></div>, 那么您的脚本如下所示:

 $(\'#correcto\').innerHTML(<div></div>);
这是无效的,因为缺少引号。innerHTML需要一个字符串,该字符串在JavaScript中用引号括起来。第一个< 就是你的错误来源。因此,您需要这样做:

 $(\'#correcto\').innerHTML(\'<?php the_field(\'correctoutput\'); ?>\');
这将产生:

 $(\'#correcto\').innerHTML(\'<div></div>\');
json_encode 不会导致错误,因为结果是有效的JavaScript类型<div></div>, 无引号,不是。

结束

相关推荐

ACF提供了一个语法错误意外标记< - 小码农CODE - 行之有效找到问题解决它

ACF提供了一个语法错误意外标记<

时间:2017-07-23 作者:baswijdenesdotcom

我正在使用ACF插件,总的来说,它工作得很好。

除了一小部分:

我在页面上有一个WYSIWYG文本框,我在其中添加了一些输入,但当我查看控制台时,我得到了一个意外的标记<;错误:

<?php the_field(\'correctoutput\'); ?>
当我尝试使用以下部分时,它只是中断:

<?php echo the_field(\'correctoutput\'); ?>
当我使用时,它也会断裂:

<?php echo json_encode the_field(\'correctoutput\'); ?>
这完全打破了页面:

<?php get_field(\'correctoutput\'); ?>
正确时,应在div中添加一些文本:

 $(\'#correcto\').innerHTML (<?php the_field(\'correctoutput\'); ?>);
我也用过。文本

它工作的唯一方法是在变量中捕获它:

<?php $correctoutput = get_post_meta( get_the_ID(), \'correctoutput\', true ); 
?>
然后输出:

<?php echo json_encode ($correctoutput); ?>
但这将删除<p></p> 标记。。。这也是问题所在。

2 个回复
SO网友:Johansson

在输出其他代码之前,应该先转义内容。这里最可能发生的事情是这样的:

$(\'correcto\').innerHTML(\'bla bla <a href=\'http://example.com\'>some link</a>\');
或者类似上面的内容,这将破坏语法。通过使用esc_html 您可以解决此问题:

$(\'#correcto\').innerHTML (\'<?php echo esc_html( get_field("correctoutput") ); ?>\');
两个附加注释the_field 响应字段的值。你不需要另一个Therecho。如果要返回值,请使用get_field 取而代之的是json_encode( get_field(\'correctoutput\') ); (是的,get_field, 不the_field! )

SO网友:Jacob Peattie

innerHTML的内容缺少引号。

如果correctoutput为<div></div>, 那么您的脚本如下所示:

 $(\'#correcto\').innerHTML(<div></div>);
这是无效的,因为缺少引号。innerHTML需要一个字符串,该字符串在JavaScript中用引号括起来。第一个< 就是你的错误来源。因此,您需要这样做:

 $(\'#correcto\').innerHTML(\'<?php the_field(\'correctoutput\'); ?>\');
这将产生:

 $(\'#correcto\').innerHTML(\'<div></div>\');
json_encode 不会导致错误,因为结果是有效的JavaScript类型<div></div>, 无引号,不是。

相关推荐