2017-03-15 4 views
0

Ich habe ein Programm, das ich Daten ohne Javascript hinzufügen kann. Aber ich möchte AJAX benutzen und ich weiß nicht, warum es nicht funktioniert. Wenn ich auf Hinzufügen klicke, passiert nichts und ich sehe die Daten in phpmyadmin nicht. Kann mir jemand helfen?Ajax speichert die Daten nicht

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

, was Sie tun sollen, um den Fehler zu isolieren, wenn Sie nicht sicher sind, ist hinzuzufügen, einige Debug-Nachrichten zu deinem Code, um zu sehen, wo dein Date "verloren" ist oder wie weit es kommt. Z.B. fügen Sie Ihrer 'control.php' eine' echo'Message hinzu und sehen Sie, ob sie überhaupt aufgerufen wird und wenn ja, überprüfen Sie die korrekten Werte – xander

+0

Sie senden '$ _POST ['add']' nicht. Ausgabe in PHP, damit Sie wissen, wo Ihre Anwendung aufhört. Außerdem sollten Sie Fehlerberichte für die Abfrage verwenden, damit Sie wissen, warum dies fehlgeschlagen ist, und die Abfrage parametrisieren sollte. – chris85

Antwort

1

Sie sind nur dies als $_POST Senden von Daten:

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

die nur $_POST['name'] führen sollte => VALUE

Aber man von $_POST['content']; und anderen Vars lesen. Sie überprüfen auch auf $_POST['add'], die nicht von Ihrem AJAX gesendet wird. Ändern Sie den Schlüssel, den Sie zum Senden/Lesen der Daten auf einer Seite verwenden, und versuchen Sie auch, die anderen Schlüssel/Werte zu Ihren Daten hinzuzufügen, z.

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

Die uid und die date sind Dinge, die Sie dynamisch sowieso in Ihrem control.php schaffen könnte wünschen. Aber dann liest sie nicht aus $_POST

ADDITION: Literaturhinweise mit einem Beispiel, das Ihren Anwendungsfall paßt: 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