jquery
  • codeigniter
  • showdown
  • 2016-11-24 98 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

    相關問題