2016-04-14 3 views
2

Я создал простую форму, состоящую из поля textarea, поэтому, когда пользователь нажимает кнопку отправки, он связан с скриптом jquery, содержащим URL-адрес, выполняющий процесс, и сохраняет данные, но проблема заключается в том, каждый раз, когда я нажимаю submit, ID & created_at данные сохраняются, но данные, данные на textarea, игнорируются и не сохраняются, никогда не сталкивались с этой проблемой раньше ... пожалуйста, помогите мне!поле формы не хранится в базе данных mysql

HTML

<form id="form" name="form" method="POST" action="profile_1.php" class="wizard-big" autocomplete="off" enctype="multipart/form-data" required=""> 
    <div class="form-group col-sm-12"> 
     <textarea type="text" name="status" id="status" placeholder="What's on your mind.." class="form-control" style="height:100px;"></textarea> 
    </div> 

    <div class="col-sm-12 form-group"> 
     <input style="width:100%" type="submit" name="submit" id="submit" value="Post" class="btn btn-success"> 
    </div> 

</form> 

Jquery

$(document).ready(function() { 
    $("#submit").click(function(e) { 

     var status = $('form')[0].checkValidity(); 
     if (status) { 
      var formData = new FormData($('form')[0]); 

      $.ajax({ 
       url: "form_post.php", 
       type: "POST", 
       data: formData, 
       processData: false, 
       contentType: false, 
       async: false, 
       dataType: "JSON", 

       success: function(json) { 
        if (json.error) { 
         alert(json.error_msg); 
         e.preventDefault(); 
        } else { 
         alert("Post updated successfully!"); 
        } 
       }, 

       error: function(jqXHR, textStatus, errorThrown) { 
        alert(errorThrown); 
       } 
      }); 
     } 

    }); 
}); 

PHP

<?php 
    session_start(); 
    define('HOST','localhost'); 
    define('USER','**'); 
    define('PASS','**'); 
    define('DB','**'); 

    $response = array(); 

    $con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect'); 

    if(!mysqli_connect_errno()){ 

     $error_flag = false; 
     /*foreach($_POST as $value){ 
      if(empty($value)){ 
       $error_flag = true; 
       break; 
      } 
     }*/ 

     if(!$error_flag){ 

      //receiving post parameters 
      $status =$_POST['status']; 


      // create a new user profile 
      $sql = "INSERT INTO status (via, status, created_at) VALUES ('".$_SESSION['vault_no']."', '$status', NOW())"; 

      if(mysqli_query($con,$sql)){ 
       $response["error"] = false; 
       $response['via'] = $via; 
       echo json_encode($response); 
      }else{ 
       $response["error"] = true; 
       $response["error_msg"] = "INSERT operation failed"; 
       echo json_encode($response); 
      } 
     }else{ 
      $response["error"] = true; 
      $response["error_msg"] = "Few fields are missing"; 
      echo json_encode($response); 
     } 

    }else{ 
     $response["error"] = true; 
     $response["error_msg"] = "Database connection failed"; 
     echo json_encode($response); 
    } 
?> 
+0

Вы проверили в своей сетевой консоли вашего браузера, что выполняется вызов AJAX? Убедитесь, что он отправляет правильные данные формы, а также попытался ли вы отлаживать '$ _POST' в вашем .php-файле? – hmd

+0

проверить, что успех ajax - это возврат? – uzaif

+0

хорошо .. !! я проверю это! –

ответ

0

Примечание: Th e в комментариях для других читателей этого вопроса

Возможно, это поможет вам. Вам необходимо сменить его на желаемое.

И сохраните эту функцию, это может быть полезно для вас в будущем.

Эта функция сериализует форму так, как это должно быть сделано.

<script> 
$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name] !== undefined) { 
      if (!o[this.name].push) { 
       o[this.name] = [o[this.name]]; 
      } 
      o[this.name].push(this.value || ''); 
     } else { 
      o[this.name] = this.value || ''; 
     } 
    }); 
    return o; 
}; 

$(function() { 
    $('form').submit(function() { 
     var formData = $('form').serializeObject(); 
     $.ajax({ 
      data: formData, 
      type: 'POST', 
      url: 'form_post.php', 
      success: function(result) { 
       $('#result').html(result); 
      }, 
      error: function(jqXHR, textStatus, errorThrown) { alert(textStatus); } 
     }); 
     return false; 
    }); 
}); 
</script> 
+0

Спасибо! Сэр, мне кажется интересным сценарием, но это не помогает мне грустно! –

+0

Вы использовали функцию serializeObject вместо новой Formdata? –

+0

да сэр, я использовал ваш сценарий .. !! но важная проблема, с которой сейчас сталкивается, - это то, что я назвал «обязательным» для этого текстового поля, но даже это игнорируется и не выдает никаких требуемых! сообщение, если пользователь напрямую нажимает submit без каких-либо данных.! –

Смежные вопросы