将多行PHP字符串插入Javascript变量

时间:2017-10-24 09:01:46

标签: javascript php jquery ace-editor

我的问题
我的问题是关于正确地将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中的输出..对吧?

Screenshot of html inserted into page
在此屏幕截图中,您可以看到插入的HTML / css。但问题出现在HTML所在的第666行。

Click here if the screenshot isn't readable for you

所以我的问题是......
为什么它不能正确解析HTML到对象中?我没有正确消毒它还是我错过了什么?

2 个答案:

答案 0 :(得分:1)

您的问题是因为您的$html字符串包含单引号,请尝试转义它们或使用双引号

答案 1 :(得分:0)

您通过将其创建的双引号更改为单引号来打破json_encode的输出。

在向脚本标记添加值时,最好直接调用json_encode:

value: <?php echo json_encode($html); ?>,