Ajax表单数据达到.done(函数(数据)),但没有发布到数据库的数据
问题描述:
我有一些信息发布到我的数据库的问题。我有其他信息在我的javascript中通过ajax调用发布到我的数据库中,并且它没有问题,但是,我不知道这部分代码出了什么问题。它拒绝发布到数据库。我想发布它,看看有没有人发现我不会阻止它进入数据库的东西。有趣的是,ajax调用正在为我的ajax调用在我的.done function(data)
内部进行,但没有任何内容进入我的数据库。Ajax表单数据达到.done(函数(数据)),但没有发布到数据库的数据
下面我发布,我认为这是相关
$('#form-reg').on('submit', function(){
// serialize the form
var formData = $(this).serialize();
$.ajax({
type : 'POST',
url : 'register.php',
data : formData,
success: function(data){
console.log(data),
},
error: function(err){ console.log(err)
};
})
.done(function (data) {
console.log("lo");
document.getElementById('form-reg').reset(function(){
alert("signed up completed");
});
})
.fail(function (error) {
alert("POST failed");
});
return false;
});
/*mysqli_connect.php -- note this is just an old file name. not important*/
<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = '';
$password = '';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
/*register.php*/
<?php
require 'mysqli_connect.php';
if((isset($_POST['name']) && !empty($_POST['name']))||
(isset($_POST['email']) && !empty($_POST['email']))){
$sth = $dbh->prepare('INSERT INTO test_table (comment) VALUES(?,?);');
$name = $_POST['name'];
$email = $_POST['email'];
$sth->execute(Array($name, $email));
}
else{
echo 'error no comment entered';
}
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript">
<div id = "register-container">
<form id = "form-reg">
<label id ="x" for="name">Name</label>
<input id="name-reg" name="name"></br>
<label id = "y" for="email">Email</label>
<input id="email-reg" name="email"></br>
<input type="submit" value="submit" id = "submit-reg">
</form>
</div>
所有代码。如果我错过了一些可以随意请求这段代码的东西。
答
看来问题是:
INSERT INTO test_table (comment) VALUES(?,?);
为什么会出现一个col“(comment)”,而在VALUES中有两个(?,?)占位符?表“test_table”中有哪些列?我想查询可能是这样的:
INSERT INTO test_table (name, email) VALUES(?,?);
答
我认为你的问题在于你的PHP。
$sth = $dbh->prepare('INSERT INTO test_table (comment) VALUES(?,?);');
$name = $_POST['name'];
$email = $_POST['email'];
您的SQL不知道问号(?)是什么,除非您给他们一个值。请看下面的例子:
$name = $_POST['name'];
$email = $_POST['email'];
$sth = $dbh->prepare('INSERT INTO test_table VALUES(?,?);');
$sth->bind_param('ss', $name, $email); // you must bind the values you wish to insert
$sth->execute();
更多有关bind_param看看PHP文档: http://php.net/manual/en/mysqli-stmt.bind-param.php
+0
感谢您的快速反应,我给了它一个旋风,但没有运气。我一定会阅读这些文档! – Jengo
添加成功和错误回调到AJAX选项对象。这样你就会知道发生了什么事。 –
如果你看一看,我的''.done'函数里面有一个回调,回调不起作用。所以不知道是否添加另一个会工作。这是一个单独的问题。我从来没有能够在我的'.done'中触发回调。 – Jengo
$就({ 类型: 'POST', URL: 'register.php', 数据:FORMDATA, 成功:功能(数据){ 的console.log(数据), }, 错误:函数(err){ console.log(err), } }) –