我的问题
我的问题是关于正确地将HTML从php解析为javascript对象中的变量(在这种情况下是ace-editor的值变量)
我的问题
我有一个HTML和CSS的textarea,HTML从数据库中检索,需要插入croppie的字段,我目前正在使用PHP的json_encode功能将它放在变量中,但似乎仍然逃避价值。
我的代码
<?php
$css = ($modify) ? trim($template->style()) : "";
$html = ($modify) ? trim( $template->html() ) : "";
$html = json_encode($html);
$css = json_encode($css);
?>
YUI().use(
'aui-ace-editor',
function(Y) {
var editorhtml = new Y.AceEditor({
boundingBox: '#editor-html',
height: '400',
mode: 'html',
value: '<?php echo substr( $html, 1, -1 ); ?>',
width: '100%',
showPrintMargin: false
}).render();
var editorcss = new Y.AceEditor({
boundingBox: '#editor-css',
height: '400',
mode: 'css',
value: '<?php echo substr( $css, 1, -1 ); ?>',
width: '100%',
showPrintMargin: false
}).render();
}
);
会发生什么
当我使用它,并打开一个可以管理的特定模板时,我将无法看到textarea的(因为无法加载ace编辑器),我得到与666行相关的随机错误,这是确切的行HTML存储在。我确实正确地清理了json_encode中的输出..对吧?
在此屏幕截图中,您可以看到插入的HTML / css。但问题出现在HTML所在的第666行。
Click here if the screenshot isn't readable for you
所以我的问题是......
为什么它不能正确解析HTML到对象中?我没有正确消毒它还是我错过了什么?
答案 0 :(得分:1)
您的问题是因为您的$html
字符串包含单引号,请尝试转义它们或使用双引号
答案 1 :(得分:0)
您通过将其创建的双引号更改为单引号来打破json_encode的输出。
在向脚本标记添加值时,最好直接调用json_encode:
value: <?php echo json_encode($html); ?>,