2012-07-09 43 views
1

我想提交一個表單,而不離開頁面使用JSON。CKEditor與JSON不通過內容

但是,下面的方法會忽略我輸入到CKEditor中的數據。

任何想法(並隨時糾正我的術語)

<script type="text/javascript"> 

$(document).ready(function() { 
    $("#addStory input[type=submit]").click(function(e) { 
     e.preventDefault(); 
     $.post('_posteddata.php', $("#addStory").serialize(), function(result) { 
      alert(result.adminList); 
     }, "json"); 
    }); 
}); 

</script> 

<form name="addStory" action="" method="post" id="addStory"> 
    <label for="story_story">Story: </label><textarea id="story_story" name="story_story">&lt;p&gt;&lt;/p&gt;</textarea> 

    <?php 
    // Include the CKEditor class. 
    include("ckeditor/ckeditor.php"); 

    // Create a class instance. 
    $CKEditor = new CKEditor(); 

    $CKEditor->basePath = '/ckeditor/' 

    $CKEditor->replace("story_story"); 

    ?> 

    <input type="submit" value="Submit" /> 


</form> 

_posteddata.php:

include 'connection.php'; 

function check_input($value, $quoteIt) 
    { 
     // Stripslashes 
     if (get_magic_quotes_gpc()) 
     { 
      $value = stripslashes($value); 
     } 
     // Quote if not a number 
     if (is_null($value) || $value=="") { 
     $value = 'NULL'; 
     } else if (!is_numeric($value) && $quoteIt == 1) { 
     $value = "'" . mysql_real_escape_string($value) . "'"; 
     } 

     return $value; 
    } 

// CKEDITOR STUFF FOR STORY_STORY 
if (isset($_POST)) { 
    $postArray = &$_POST; 
} 

foreach ($postArray as $sForm => $value) 
{ 


    if($sForm == "story_story") { 
     $story_story = check_input($value, 1); 
    } 
} 

$query = "INSERT INTO story_table (story) VALUES ($story_story)"; 

mysql_query($query) or die(mysql_error() . $query); 

$return = array(); 
$return['adminList'] = "New story added with ID: " . mysql_insert_id(); 
header('application/json'); 
echo json_encode($return); 

mysql_close(); 
+0

不完全確定CKeditor lib在替換()s時做了什麼 - 但是你可以在$ _POST上執行print_r/var_dump並檢查它是否拉動'story_story'的任何內容? – Tjkoopa 2012-07-09 12:57:22

+0

它只是將默認值(

)放入表格中。 – Tom 2012-07-09 13:01:07

回答

4

在這種情況下,你必須強制的CKEditor到update the contents of the textarea

所以,你的函數將是這樣的:

$(document).ready(function() { 
    $("#addStory input[type=submit]").click(function(e) { 
     e.preventDefault(); 

     CKEDITOR.instances.story_story.updateElement(); // Update the textarea 

     $.post('_posteddata.php', $("#addStory").serialize(), function(result) { 
      alert(result.adminList); 
     }, "json"); 
    }); 
});