2017-03-15 12 views
0

javascriptなしでデータを追加できるプログラムがあります。しかし、AJAXを使いたいのですが、なぜ動作しないのか分かりません。私が[追加]ボタンをクリックすると、何も起きず、phpmyadminにデータが表示されません。誰でも助けてくれますか?Ajaxにデータが保存されていません

のindex.php:

session_start(); 
require_once("auth.php"); 
require_once("control.php"); 

<div class="well well-sm bs-component"> 
    <div class="form-group row add"> 
    <form method="post" action=""> 
     <div class="col-md-12"> 
     <label for="content" class="control-label">Your Comment</label> 
      <input type="hidden" name="uid" value="<?= $id; ?>"> 
      <input type="hidden" name="date" value="<?= date('Y-m-d H:i:s') ?>"> 
      <textarea id="content" name="content" class="form-control" rows="3" placeholder="Enter your comment..." required></textarea> 
      <p class="error text-center alert alert-danger hidden"></p> 
     </div> 
     <div class="addButton col-md-12"> 
      <button class="btn" type="submit" id="add" name="add"> 
       <span class="glyphicon glyphicon-plus"></span> SEND 
      </button> 
     </div> 
    </div> 
    </form>  
</div> 

control.php:

//ADD COMMENT 
if (isset($_POST['add'])) { 
$id = $_POST['uid']; 
$date = $_POST['date']; 
$content = $_POST['content']; 

$sql= "INSERT INTO posts (uid, content, date) VALUES ('$id', '$content', '$date')"; 

if (!$mysqli->query($sql)) { 
header("location: error.php"); 
} 
} 

Javascriptを:

$("#add").click(function() { 

var formData = { 
    'name': $('#content').val() 
    }; 


    $.ajax({ 
     type: 'post', 
     url: 'control.php', 
     data: formData, 
     success: function(data) { 
      if ((data.errors)){ 
       $('.error').removeClass('hidden'); 
       $('.error').text(data.errors.name); 
      } 
      else { 
       $('.error').addClass('hidden'); 
       $('#table').prepend("<div class='item" + data.id + " mess'><div class='btn-group-sm'><button class='edit-modal btn btn-circle' data-id=" + data.id + " data-name=" + data.name +"><span class='glyphicon glyphicon-pencil'></span></button><button class='delete-modal btn btn-circle' data-id=" + data.id + " data-name=" + data.name +"><span class='glyphicon glyphicon-trash'></span></button></div><article class='myMessage'><p>" + data.name + "</p></article></div><div class='clear' style='clear: both;''></div>"); 
      } 
     }, 

    }); 
    $('#content').val(''); 

}); 
+0

追加することですがあなたのコードにいくつかのデバッグメッセージを表示して、実際にあなたの日付が「失われた」場所やどこまでのものかを確認します。例えば。あなたの 'control.php'に' echo'メッセージを追加し、それが呼び出されているかどうかを確認してください。正しい値を確認してください。 – xander

+0

あなたは '$ _POST ['add']'を送信していません。 PHPで出力するので、アプリケーションが停止する場所を知ることができます。また、クエリでエラー報告を使用して、なぜ失敗したのかを知って、クエリをパラメータ化する必要があります。 – chris85

答えて

1

あなたは$_POSTデータとしてのみ、この送信されます。

var formData = { 
    'name': $('#content').val() 
}; 
唯一 $_POST['name']になるはずである

=> VALUE

しかし、あなたは$_POST['content'];や他のVARSから読んでいます。 あなたのAJAXによって送信されていない$_POST['add']もチェックしてください。 キーを変更すると、一方の側でデータの送受信を行い、他のキー/値をデータに追加しようとしています。

var formData = { 
    'add': 'yes', 
    'content': $('#content').val(), 
    'uid': SOMEVALUE, 
    'date': SOMEVALUE 
}; 

uiddateはあなたが動的に、とにかくあなたのcontrol.phpに作成したいかもしれないものです。しかし、その後$_POST

ADDITIONからそれらを読んでいない。また、読書をご利用の場合一致した例で:あなたがわからない場合はエラーを分離するために何をすべきかhttps://scotch.io/tutorials/submitting-ajax-forms-with-jquery

0
you are just passing name. you have to pass uid and date also 
var formData = { 
    'name': $('#content').val() 
    }; 

with this. 
give id to uid and date textfield 
var formData = { 
    'name': $('#content').val(), 
    'uid': $('#uid').val(), 
    'date': $('#date').val(), 
    }; 


in control.php database connection is necessary. without it record will not inserted 
関連する問題