AJAX,PHP表单未提交到数据库

14 浏览
0 Comments

AJAX,PHP表单未提交到数据库

我已经尝试很久让这个工作起来,并且阅读了很多其他类似问题的答案(How to add AJAX Submit to PHP validation and return message? , ajax submit form why it cannot echo $_POST),但是似乎无法使其工作。

基本上,我试图创建一个注册表单,只需将某人的电子邮件地址插入到表中的新行中,以便我可以测量访问者的转化率!话不多说,这是我的脚本,我真诚地希望你能帮助我 🙂

HTML表单:


        

send_post php:

 connect_error) {
    die("连接失败:" . $conn->connect_error);
} 
// 插入数据
mysqli_query($conn,"INSERT INTO email (email)
VALUES ('$email')");
$conn->close();
?>

Javascript + AJAX:

// 提交表单
$('#signup-form').submit(function () {
      $.ajax({type: "POST",
              url: "send_post.php",
              data: $("#signup-form"),
              success: function () {
              alert("成功");
     }
});
     e.preventDefault(); 
     return false;
});

为了提高可读性,我只包含了包含ajax部分的一小部分JS代码。

PS. 当我直接导航到send_post.php时,它会在数据库中创建一个空行。

0
0 Comments

问题原因:数据格式错误导致表单无法提交到数据库。

解决方法:将数据格式调整为键值对格式。

具体代码如下:

data: {email:$('#email').val()}

这样,表单中的email字段的值将被保存在email键中,然后可以正常提交到数据库中。

0
0 Comments

问题的原因是没有将表单的值传递给请求数据。解决方法是显式地设置表单的值或者序列化表单对象。

以下是解决方法的具体步骤:

步骤1:设置表单的值

data: {
    field1: $("#field1").val(),
    field2: $("#field2").val(),
    // 以此类推,设置所有表单字段的值
},

步骤2:序列化表单对象

data: $("#signup-form").serialize(),

你可以参考这个链接了解更多关于如何将整个表单作为数据传递给jQuery的Ajax函数的信息。

0
0 Comments

问题的原因:

1. 未正确取消默认的提交事件,变量e未定义。

2. 未发送任何数据,需要序列化表单并发送数据,而不是发送表单对象本身。

3. 存在sql注入问题,应该使用预处理语句和绑定占位符。

解决方法:

1. 取消默认的提交事件应该使用event.preventDefault()方法。

2. 序列化表单数据并发送,可以使用jQuery的serialize()方法,例如

data: $('form').serialize()

3. 解决sql注入问题,可以使用预处理语句和绑定占位符。使用PDO或mysqli扩展可以实现预处理语句,例如:

$stmt = $pdo->prepare("INSERT INTO table (column1, column2) VALUES (?, ?)");
$stmt->bindValue(1, $value1);
$stmt->bindValue(2, $value2);
$stmt->execute();

0