2016-12-15 85 views
3

我在使用ajax保存数据库中的summernote值时遇到问题,但是当我不使用ajax时,一切正常。问题在DB中保存summernote

说清楚。

<?php 
    include 'db.php'; 
    $db=new db; 

    if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ 
    if($_POST['act']=='save'){ 
     $content=$_POST['content']; 
     $id=25; 

     $query="UPDATE content SET content=? WHERE id=?"; 
     $db->execquery($query, 'si', array($content, $id)); 
     echo json_encode(array("response"=>'success')); 
     exit(); 
    } 
    } 
?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 
    <title>summernote</title> 
    <!-- include jquery --> 
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> 

    <!-- include libraries BS3 --> 
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.1/css/bootstrap.min.css" /> 
    <script type="text/javascript" src="//netdna.bootstrapcdn.com/bootstrap/3.0.1/js/bootstrap.min.js"></script> 

    <!-- include summernote --> 
    <link rel="stylesheet" href="../dist/summernote.css"> 
    <script type="text/javascript" src="../dist/summernote.js"></script> 

    <script type="text/javascript"> 
    $(function() { 
     $('.summernote').summernote({ 
      toolbar: [ 
      // [groupName, [list of button]] 
      ['style', ['bold', 'italic', 'underline', 'clear']], 
      ['font', ['strikethrough', 'superscript', 'subscript']], 
      ['fontsize', ['fontsize']], 
      ['color', ['color']], 
      ['para', ['ul', 'ol', 'paragraph']], 
      ['height', ['height']] 
      ] 
     }); 

     $('form').on('submit', function (e) { 
     e.preventDefault(); 

     content=$('.summernote').summernote('code'); 
     data='act=save&content='+content; 
     $.ajax({ 
      type: "POST", 
      dataType: "JSON", 
      data: data, 
     }) 
     .fail(function(e){ 
      alert(e.response); 
     }) 
     .done(function(data){ 
      if(data.response=='success'){ 
       alert('success!'); 
      } 
     }); 
     }); 
    }); 
    </script> 
</head> 
<body> 
<form action="#" novalidate> 
    <div class="form-group"> 
    <label for="input">Text</label> 
    <textarea class="form-input" id="input"></textarea> 
    </div> 
    <div class="form-group"> 
    <label for="contents">Contents</label> 
    <textarea name="text" class="summernote" id="contents" title="Contents"></textarea> 
    </div> 
    <button type="submit" class="btn btn-default">submit</button> 
</form> 
</body> 
</html> 

反正当我只需键入summernote值简单的文本被保存,但是当我粘贴MSWORD类似的东西正在被保存的值一些文本被切断。

我尝试了一些东西,当我按下提交时,我也把summernote值放入一个额外的textarea,然后当我手动在数据库中粘贴值时,一切都很好。我也尝试复制codeview值然后手动粘贴数据库,然后它也很好。请帮忙。

提前致谢!

回答

3

我有同样的问题,我有固定它:

的Javascript

content = encodeURIComponent($('.summernote').summernote('code'));

PHP

urldecode($_POST[content])