2015-02-03 3 views
0

У меня проблема. Я пытаюсь вставить в базу данных сообщения, сделанные пользователями, и я бы хотел использовать Ajax, чтобы сделать его более динамичным и отправлять ввод, выбирать значения и содержимое в div с его содержимым, редактируемым через jQuery. Я использую FormData для получения всех данных в форме.Как получить значение div с содержимым, редактируемым, чтобы отправить его в файл php через Ajax?

я иметь такую ​​форму:

<form id="data" method="post" enctype="multipart/form-data"> 

    <input type="text" name="title" placeholder="Title"> 
    <div id="content" class="content" contenteditable="true"></div> 
    <input type="text" name="tags" placeholder="Tags"> 
    <input type="file" name="file"> 

    <select> 
      <option value="0">Select...</option> 
      <option value="1">Option A</option> 
      <option value="2">Option B</option> 
      <option value="3">Option C</option> 
    </select> 
    <button name="insert" value="insert" class="button">Post</button> 


</form> 

JQuery/Ajax:

$(document).ready(function(){ 
    $("form#data").submit(function(){ 
      var formData = new FormData($(this)[0]); 
      var cont = $("#content").val(); 
      formData.append("content", cont); 
      $.ajax({ 
       url: 'iproddone.php', 
       type: 'POST', 
       data: formData, 
       async: false, 
       success: function (data) { 
         alert(data); 
         location.reload(); 
       }, 
       cache: false, 
       contentType: false, 
       processData: false 
       }); 
       return false; 
       }); 
     }); 

Недавно я добавил строку var cont = $("#content").val(); и formData.append("content", cont);, и я не заметил, PHP больше не отмечает ошибку, когда он пытается $_POST['content']; но когда у меня не было таких строк, php отметил ошибку.

PHP:

<?php 

    if (isset($_POST['insert'])) { 
     include_once('conn.php'); //connection file 

     $tt=$_POST['title']; 
     $cont=$_POST['content']; 
     $tags=$_POST['tags']; 

     $foo = $tt; 
     $foo = ucfirst($foo); 

     if (0 < $_FILES['file']['error']) { 
      echo 'Error: ' . $_FILES['file']['error'] . '<br>'; 
      } 
      else { 
       move_uploaded_file($_FILES['file']['tmp_name'], 'img/tmb_prod/' . $_FILES['file']['name']); 
       $photo=$_FILES['file']['name']; 
      } 

      echo "Image uploaded"; 

     $connn=mysql_connect("localhost","root","")or die("Connection problems"); 
     mysql_select_db("gtcomputer",$conn)or die("Error"); 

     mysql_query("insert into posts(title,content,tags,photo)values('$foo','$cont','$tags','$photo')",$conn)or die("Error".mysql_error()); 
     } 

    else{ 
     header('Location: index.php'); 
    } 

?> 

Когда я делаю новый пост, в таблице сообщений вставляются только заголовок, теги и имя файла.

ответ

1

Просто добавил formData.append('content', $('#content').html()); и работал.

$(document).ready(function(){ 
     $("form#data").submit(function(){ 
       var formData = new FormData($(this)[0]); 
       formData.append('content', $('#content').html()); 

       $.ajax({ 
        url: 'iproddone.php', 
        type: 'POST', 
        data: formData, 
        async: false, 
        success: function (data) { 
          alert(data); 
          location.reload(); 
        }, 
        cache: false, 
        contentType: false, 
        processData: false 
        }); 
        return false; 
        }); 
      });