jquery
  • codeigniter
  • showdown
  • 2016-11-24 62 views 0 likes 
    0

    我正在使用showdown.js和codeigniter。一旦我将代码插入到数据库中,我应该可以从我的数据库中预览问题。如何让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处理文本从代码数据库

    控制器

    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> 
    

    enter image description here

    enter image description here

    +0

    因此,您试图通过您的视图找到一些“标记”,然后让脚本将它重新写回到重新格式化的相同位置。它可以工作...尝试在$(document).ready(function(){)中包装JS;确保您的“文本”在您的视图源代码生成页面时将其显示在页面上。 – TimBrownlaw

    +0

    @TimBrownlaw https://github.com/showdownjs/showdown – user4419336

    +0

    是的,在回答之前就已经去过那里了:)好的,所以我不能编辑我的初始评论,所以我会在这次更加糟糕地重申它...所以你正在向JS喷出一些标记,并将格式化文本写入div ... – TimBrownlaw

    回答

    1

    在您的修修补补,而无需使用数据库,只是路过,采取多种形式的测试串OU的类型,你会注意到之类的东西......

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

    就像一个享受,而像串(你是从你的DB生产)

    $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()包装器按预期工作。

    +0

    如果我有4个空格会触发'#Test String \ r \ n我是兔子\ r \ n

    '我在那里放了什么,因为它没有检测到4个空格我试过'#Test String \ r \ n \ r \ n我是兔子\ r \ n \ r \ n          
    ' – user4419336

    +0

    如上所述要创建代码块,您应该缩进四个空格。 https://github.com/showdownjs/showdown/wiki/Showdown's-Markdown-syntax,但不知道如何做的PHP端,所以出来可以触发预标签,这就是为什么认为' ',但没有工作 – user4419336

    +0

    感谢提示我必须做一些改变 – user4419336

    相关问题