Как исправить значение, не вставленное в базу данных с помощью ajax - PullRequest
0 голосов
/ 24 января 2019

Мое значение данных формы не добавляется в мою базу данных после отправки. прежде чем я установлю ckEditor публиковать данные, используя ajax, и это успешно, но после этого я получаю ошибку из другого ввода. Я получаю ошибку Undefined index для всего моего ввода. Если я добавлю if (issest($_POST["submit"])), все ошибки исчезнут, но данные не будут отправлены в базу данных. Вы можете мне помочь? вот мой код:

  <form id="addpostForm" class="" action="" method="post" enctype="multipart/form-data">
    <div class="form-group">
      <label for="inputPostTitle" class="sr-only">Title</label>
      <input name="post_title" type="text" class="form-control" id="inputPostTitle" placeholder="Title">
    </div>
    <div class="form-group">
      <label for="inputEditor" class="sr-only">Content</label>
      <textarea name="post_content" type="text" class="form-control" id="inputEditor"></textarea>
    </div>
    <div class="form-group">
      <label for="inputTags">Tags</label>
      <input name="tags" type="text" id="inputTags" data-role="tagsinput" placeholder="Separate tags with (,) commas">
    </div>
    <button type="button" class="btn btn-primary" id="buttonAddPost">Submit</button>
  </form>

JavaScript:

  $(document).ready(function(){
    $('#buttonAddPost').click(function(){
      //var formData = new FormData($('#addpostForm')[0]);
      var ckEditor = CKEDITOR.instances.inputEditor.getData();
      formData = $("#addpostForm").serialize + '&ckEditor=' + encodeURIComponent(ckEditor);
      //alert(ckEditor);
      //formData.append("post_content", ckEditor);

      $.ajax({
        url: 'modules/post/add.php',
        type: 'post',
        data: formData,
        cache: false,
        processData: false,
        success: function(resAddPost){
          if(resAddPost == 'ok'){
            $.bootstrapGrowl('Form data submitted successfully.', {type: 'success'});
          }else{
            $.bootstrapGrowl('Some problem occurred, please try again.', {type: 'danger'});
          }
          console.log(resAddPost);
        },
        error: function(xhr, ajaxOptions, thrownError){
          console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
      });
    });
  });

Php:

<?php include "../../../_includes/config.php"; ?>
<?php
include "../../data/prettyurl.php";
session_start();
$post_id = time();
$post_title = $_POST['post_title'];
$post_content = $_POST['post_content'];
$post_added = date('Y-m-d');
$post_author = $_SESSION['SES_LOGIN']['user_display'];
$tags = explode(",", $_POST['tags']);
$post_title = trim($post_title);
$post_title_result = $post_title;
if($post_title_result){
  $post_slug = pretty_url($post_title);
  $post_title_data = $post_title;
}
$post_slug2 = $post_slug;
$query_check_post_slug = mysql_query("SELECT * FROM tb_posts WHERE post_slug LIKE '".$post_slug."%'") or die(mysql_error());
while($row = mysql_fetch_assoc($query_check_post_slug)){
  $post_slugs[] = $row['post_slug'];
  if(mysql_num_rows($query_check_post_slug) !== 0 && in_array($post_slug, $post_slugs)){
    $max = 0;
    $post_slug = $post_slug2;
    while(in_array(($post_slug.'-'.++$max), $post_slugs));
    $post_slug .= '-'.$max;
  }
}

$query_insert_post = mysql_query("INSERT INTO tb_posts (post_id, post_title, post_content, post_added, post_author, post_slug) VALUES ('$post_id', '$post_title', '$post_content', '$post_added', '$post_author', '$post_slug')") or die(mysql_error());
foreach($tags as $tag){
  $tag_id = "Tag-".$tag;
  $query_insert_tags = mysql_query("INSERT INTO tb_tags (tag_id, tag) VALUES ('$tag_id', '$tag')") or die(mysql_error());
  $query_insert_tag_posts = mysql_query("INSERT INTO tb_tag_posts (post_id, tag_id) VALUES ('$post_id', '$tag_id')") or die(mysql_error());
}
if($query_insert_post){
  echo "ok";
}else{
  echo "err";
}
?>

Мой ckEditor заменяет идентификатор "inputEditor".

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Пожалуйста, исправьте имя ключа, которое вы добавили в функцию $ _POST.Вот так

Вы отправляете данные с: data: formData + '& ckEditor =' + ckEditor,

Так почему вы получаете это в: $ _POST ['post_content'];

Вам нужно попробовать это как $ _POST ['ckEditor'];

0 голосов
/ 24 января 2019

Вы не можете сделать это:

data: formData + '&ckEditor=' + ckEditor,

formData не строка, вы не можете объединить ее.

Вместо этого вы должны сделать:

formData.append('ckEditor', ckeditor);

до $.ajax.

Затем в PHP используйте $_POST['ckEditor'], чтобы получить это поле.

Вы также можете использовать сериализованные данные следующим образом:

formData = $("#addpostForm").serialize() + '&ckEditor=' + encodeURIComponent(ckEditor);

Если вы сделаете это, вы не должны использовать contentType: false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...