私はAJAX経由でフォームデータを投稿しようとしています。AJAXのシリアル化されたデータが空です
AJAX関数を削除し、標準形式のPOSTメソッドを実行すると、データはDBに正常に挿入されます。私はconsole.log
提出時にフォームのシリアル化されたデータが正常に表示されます。
データが一見消えてしまうAJAX機能が起動したときです。関数は成功として起動しますが、データは挿入されず、formdata変数は一見空です。誰でもこの光を照らすことができますか?ここで
は、これまでのコードだ -jQueryの/ AJAX -
$('#calendar-form').submit(function() {
var formdata = $(this).serialize();
console.log(formdata);
$.ajax({
url: "insert.php",
type: "POST",
data: formdata,
success: function() {
alert('success')
},
error: function() {
alert('ERROR');
}
});
return false;
});
HTML
<form id="calendar-form" action="" method="" accept-charset="utf-8">
<input type="text" name="name" id="name">
<input type="text" name="email" id="email">
<input type="hidden" name="site" id="site" value="<? echo $_SERVER['HTTP_HOST'] ?>">
<input class="submit" type="submit" name="submit" value="Submit">
</form>
PHP
try {
$bd = new PDO("mysql:host=localhost;dbname=;charset=utf8", "", "");
// $bd->setAttribute(PDO::ATT_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Theres been an error while attempting to connect to the database';
}
if(isset($_POST['submit'])){
$name = $_POST['name'];
$email = $_POST['email'];
$site = $_POST['site'];
$sql = "INSERT INTO `users`(`name`, `email`, `site`) VALUES ('$name', '$email', '$site')";
try {
$query = $bd->prepare($sql);
$query->bindValue(':name', $name, PDO::PARAM_STR);
$query->bindValue(':email', $email, PDO::PARAM_STR);
$query->bindValue(':site', $site, PDO::PARAM_STR);
if($query->execute()){
echo "Success";
}else{
echo "Failure";
}
} catch (Exception $e) {
echo $e->getMessage();
}
}
注:この記事のDBの詳細は削除されていますが、コードにはその部分があります。
コンソール
名=ベンジー&メール=電子メール%40email.com &サイトは=ローカルホスト%3A8888 - scripts.min.js:9:117
ネットワーク
プリペアドステートメントを正しく使用していません。プレースホルダを値として使用してください。 – Akintunde007
の中に投稿データをスローしないでください。リクエストを分析するには、開発者ツールの[ネットワーク]タブをご覧ください。 –
print_r($ _ POST)とは何ですか?戻る? – Akintunde007