【发布时间】:2015-09-14 16:18:54
【问题描述】:
我正在设置表单提交,但在让 Ajax 连接到 PHP 并将表单信息发送到所需的电子邮件地址时遇到了一些麻烦。不是这方面的专家,因为这是我第一次尝试 AJAX 提交表单信息。
感谢您就出了什么问题提出任何意见。
提前致谢
此代码现在可以正常工作了我已使用新代码更新了问题。
表格:
<form name="contactform" id="contactsubmit" action="form_action.php">
<h2>contact form</h2>
<hr>
<label class="Tgrey">name</label>
<input type="text" name="name" id="name" required>
<label class="Tgrey">email</label>
<input type="email" name="email" id="email" required>
<label class="Tgrey">Telephone</label>
<input type="tel" name="telephone" id="telephone" required>
<br>
<br>
<label class="Tgrey">Telephone</label>
<br>
<textarea name="message" rows="10" cols="50" id="message" required></textarea>
<br>
<input type="submit" value="send">
</form>
JQUERY/AJAX
$("form").submit(function(e)
{
event.preventDefault();
$.ajax(
{
'url' : $(this).attr('action'),
'type' : "POST",
'data' : $(this).serialize(),
success:function(success)
{alert("HEY")},
});
});
PHP
if(isset($_POST['name'], $_POST['email'], $_POST['telephone'], $_POST['message'])){
$name = $_POST['name'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$message = $_POST['message'];
$to = "name@email.com";
$subject = "Message from $name via Web:";
$txt = "This message has come website: \n
$message \n
Contact details:\n
Name: $name, Email: $email, Telephone: $telephone";
$header = "From Website";
mail($to,$subject,$txt,$headers);
}
【问题讨论】:
-
仅供参考:
<form>不包含名称属性。那么这将失败if(isset($_POST['submit'])) {...}- 检查您的控制台并使用错误报告php.net/manual/en/function.error-reporting.php -
PHP 代码不会被执行,因为没有带有 name 'submit' 的表单元素,所以
isset($_POST['submit'])返回 false。 -
您也没有分配给
$headers。再次...错误报告。 -
哦,所有这些
isset($_POST也会失败。您可能正在尝试使用三元运算符,但只是错误的方式。 php.net/manual/en/language.operators.comparison.php - 但是,最好使用!empty()和三元组。 -
感谢大家的帮助。我从你给我的输入从头开始并让它工作。以上代码已更新