Ich habe ein Formular, das Formular hat Textfelder und eine Leinwand, die als Signature Pad Preforms.XMLHttpRequest Aktion nach Erfolg
Ich benutze ajax
, um das Formular zu senden. Was ich habe Probleme, ist zu bestätigen, dass das Formular in die Datenbank eingefügt wird.
Ich denke, dass es eine Kollision zwischen dem Ajax und dem PHP gibt, den ich benutze, um die Formulardaten in die mysql db einzufügen, wie kann ich es tun?
Dies ist der Inhalt der js
Datei var fd = new FormData(document.forms["form1"]);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload_data.php', true);
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
var percentComplete = (e.loaded/e.total) * 100;
alert(percentComplete + '% uploaded');
}
};
xhr.onload = function() {
};
xhr.send(fd);
Dies ist der Inhalt der upload_data.php
Datei:
<?php
require 'inc/inc.php';
$upload_dir = "upload/";
$img = $_POST['hidden_data'];
$idNo = $_POST['idno'];
$name = $_POST['fname'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = $upload_dir . mktime() ."-" . $idNo . ".png";
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
$suc = new Form;
$suc->insert_data($name, $file, $idNo);
?>
Dies ist die insert_data()
PHP-Funktion Inhalt
public function insert_data($name, $file, $idNo){
$query = $this->dbh->prepare("INSERT INTO signitures (name, file, idno) VALUES(?, ?, ?)");
$query->bindparam(1, $name);
$query->bindparam(2, $file);
$query->bindparam(3, $idNo);
try {
$query->execute();
if ($query) {
echo "success!! ";
} else {
echo "Failure conncting db!";
}
}
catch (PDOException $e) {
die($e->getMessage());
}
}
I wissen, dass wenn $query->execute();
zurückgibtals die Daten eingefügt wurden. Wie kann ich den Benutzer darüber informieren, dass die Daten wirklich in die Datenbank eingefügt wurden? Selbst übergeben Sie den Benutzer auf eine neue Seite ist eine Option. Aktual, umleiten Sie den Benutzer auf eine neue Seite wird großartig!
Mögliche Duplikat [wie Sie herausfinden, ob XMLHttpRequest.send() gearbeitet] (https://stackoverflow.com/questions/10876123/how-to-find-out-if -xmlhttprequest-send-arbeitete) –
Ich weiß nicht PHP, also kann ich Ihnen nicht die Implementierungsdetails geben, aber das Konzept ist einfach. Sobald PHP die Datenbank abgefragt hat, muss er eine Antwort an den Client senden, der die Einfügung angefordert hat. Sie könnten einfach HTTP-Statuscodes verwenden, z. 200 wenn erfolgreich eingefügt. Lesen Sie dann die Antwortheader von JavaScript. –