好的,所以我想在不重新加载页面的情况下提交表单,这可能是一个老话题。但是,我设法找到了解决方案,但它根本不起作用,我不知道我错过了什么。
我知道这是一个javascript问题,因为如果我使用简单版本,提交没有任何javascript的表单,我会收到电子邮件,但现在我没有。
这是我的HTML:
<form action="confirm.php" id="support" method="post">
<input autocomplete="off" id="name" name="name" placeholder="Numele tău" required="" type="text" />
<input autocomplete="off" id="email" name="email" placeholder="Email-ul tău" required="" type="email" />
<input autocomplete="off" id="phone" name="phone" placeholder="Numărul tău de telefon (opțional)" type="tel" />
<input class="button" name="submit" type="submit" value="TRIMITE" />
<p id="success">Thanks!</p>
</form>
这是我的PHP:
<?php
if(isset($_POST['submit'])){
$to = "invest@es-sphere.ro";
$name = $_POST['name'];
$from = $_POST['email'];
$phone = $_POST['phone'];
$subject = "Sunt interesat de INVEST!";
$message = $name . ", cu numărul de telefon " . $phone . " și email-ul " . $from . "este interesat de proiectul INVEST";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
}
?>
这是我的javascript:
$(document).ready(function () {
$('#support').submit(function (e) {
e.preventDefault();
var formData = $(this).serialize();
$.post("confirm.php", formData).done(function() {
console.log("Success");
$("#success").show();
});
});
});
答案 0 :(得分:2)
问题是你正在检查是否提交了#34;已经发送。但是按钮值不会随现有代码一起发送。
更改此
if(isset($_POST['submit'])){
到
if(isset($_POST['name'])){
或其他一些值,或者可能是最好的,检查所有值。
答案 1 :(得分:1)
$(this).serialize()
不会收集用于提交表单的提交按钮的名称/值。
if(isset($_POST['submit'])){
因此会失败。
使用其他一些测试(例如另一个字段)来查看是否正在提交表单数据。