0

我正在使用 showdown.js 和 codeigniter。一旦我将代码插入数据库,我应该能够从我的数据库中预览问题。

当我尝试查看它时。

它在萤火虫中显示错误

语法错误未终止的字符串文字

Javascript 摊牌

<script type="text/javascript">
var converter = new showdown.Converter(),
    text = '<?php echo $output;?>',
    target = document.getElementById('output'),
    html = converter.makeHtml(text);
    target.innerHTML = html;

</script>

问题:如何让 showdown.js 在 codeigniter 中处理数据库中的文本

控制器

<?php

class Example extends CI_Controller {

    public function index()
    {
        $question = $this->results();


        $data['output'] = $question['question'];  

        print_r($question['question']); 


        $this->load->view('example_view', $data);
    }

    public function results() {
        $this->db->where('question_id', '1');
        $query = $this->db->get('question');

        return $query->row_array();
    }
}

HTML

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link rel="stylesheet" type="text/css" href="<?php echo base_url('assets/bootstrap3/css/bootstrap.css');?>">

    <script type="text/javascript" src="<?php echo base_url('assets/jQuery/jquery-3.1.1.js');?>"></script>
    <script type="text/javascript" src="<?php echo base_url('assets/bootstrap3/js/bootstrap.js');?>"></script>
    <script type="text/javascript" src="<?php echo base_url('assets/showdown/dist/showdown.js');?>"></script>
</head>
<body>

<div class="container">

<div class="row">
<div class="col-lg-12">
<textarea rows="10" class="form-control" id="editor"></textarea>
</div>
</div>

<div class="row">
<div class="col-lg-12">
<div id="preview"></div>
</div>
</div>

<div class="row">
<div class="col-lg-12">
<div id="output"></div>
</div>
</div>

</div>


<script type="text/javascript">
$("#editor").on('keyup', function(e) {
var text = document.getElementById('editor').value,
      target = document.getElementById('preview'),
      converter = new showdown.Converter(),
      html = converter.makeHtml(text);

    target.innerHTML = html;
});
</script>

<script type="text/javascript">
var converter = new showdown.Converter(),
    text = '<?php echo $output;?>',
    target = document.getElementById('output'),
    html = converter.makeHtml(text);
    target.innerHTML = html;

</script>

</body>
</html>

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

1

在您不使用数据库而只传递各种类型的测试字符串的情况下进行修补时,您会注意到诸如...

$preview = '###Test String\r\n## I am a Rabbit';

像款待一样工作,而字符串像(您从数据库中生成)

 $preview = '###Test String
    ## I am a Rabbit';

导致错误!经过一番打猎后,我发现了这个巧妙的技巧。

要格式化要在 Javascript 中使用的字符串,您可以使用json_encode().

你必须按摩这个以适应你的情况......

$text = json_encode($text); // The string from your Table
echo "<script>var text={$text};</script>"; // Set it up as a var to pass to your JS

或者在 JS 本身中,你可以使用类似的东西,或者你想如何传递它......

echo
"<script>
 $(document).ready(function(){
    var text={$preview};
    var converter = new showdown.Converter(),
    target = document.getElementById(\'output\'),
    html = converter.makeHtml(text);
    target.innerHTML = html;
});
</script>";

$(document).ready() 包装器确实按预期工作。

于 2016-11-24T09:24:59.107 回答