1

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();
4

1 に答える 1

4

このような状況では、CKEditor に強制的にテキストエリアの内容を更新させる必要があります。

したがって、関数は次のようになります。

$(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");
    });
});
于 2012-07-09T14:20:46.050 に答える