2016-04-14 19 views
2

私はtextareaフィールドからなる単純なフォームを作成しました。ユーザーがサブミットボタンをクリックすると、プロセスを実行してデータを保存するURLを含むjqueryスクリプトにリンクされますが、私が提出するたびに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コールが実行されていることを確認しましたか?それが正しい形式のデータを送信していることを確認し、.phpファイルで '$ _POST'をデバッグしようとしましたか? – 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

新しいFormdataではなくserializeObject関数を使用しましたか? –

+0

はい、あなたのスクリプトを使っていました.. !!しかし、今直面している重要な問題は、そのテキストエリアに「必須」と言われていますが、それも無視され、必要なものは何もポップアップしていません!ユーザーがデータなしで直接提出した場合のメッセージです。 –

関連する問題