【发布时间】:2018-09-06 19:34:06
【问题描述】:
我目前正在为客户开发我的第一个网站,因此对 PHP 来说是全新的。该页面是在线的,但是电子邮件表单似乎除了刷新页面之外什么都不做。我在 php 文件的末尾放置了一个条件来回显成功或失败,但它似乎什么也没做。我无法确定哪里出错了。
html
<form id="my_form" onsubmit="submitForm(); return false;">
<p> <label>First Name</label>
<input type="text" name="first_name" id="firstName" required>
</p>
<p> <label>Last Name</label>
<input type="text" name="last_name" id="lastName" required> </p>
<p> <label>Phone Number</label>
<input type="text" name="phone_number" id="phoneNumber" required>
</p>
<p> <label>Email Address</label>
<input type="email" name="email_address" id="emailAddress"
required> </p>
<p class="full"> <label>Message</label>
<textarea name="message" rows="5" id="message" required>
</textarea> </p>
<p class="full">
<button id="button" type="submit" value="Submit Form"><span
id="status"></span>Email</button>
</p>
</form>
JS
function _(id){ return document.getElementById(id); }
function submitForm(){
_("button").disabled = true;
_("status").innerHTML = 'please wait ...';
var formdata = new FormData();
formdata.append( "name", _("name").value );
formdata.append( "lastName", _("lastName").value );
formdata.append( "phoneNumber", _("phoneNumber").value );
formdata.append( "emailAddress", _("emailAddress").value );
formdata.append( "message", _("message").value );
var ajax = new XMLHttpRequest();
ajax.open( "POST", "index.php" );
ajax.onreadystatechange = function() {
if(ajax.readyState == 4 && ajax.status == 200) {
if(ajax.responseText == "success"){
_("my_form").innerHTML = '<h2>Thank you '+_("name").value +', your message has been sent.</h2>';
} else {
_("status").innerHTML = ajax.responseText;
_("button").disabled = false;
}
}
}
ajax.send( formdata );
}
PHP
<?php
if( isset($_POST['name']) && isset($_POST['lastName']) && isset($_POST['phoneNumber']) && isset($_POST['emailAddress']) && isset($_POST['message']) ){
$name = $_POST['name'];
$lastName = $_POST['lastName'];
$phoneNumber = $_POST['phoneNumber'];
$emailAddress = $_POST['emailAddress'];
$message = nl2br($_POST['message']);
$to = "info@glaucomaspecialists.com";
$from = $emailAddress;
$subject = 'Schedule Inquiry';
$message = "<b>Name:</b> '.$name.' <b>LastName:</b> '.$lastName.' <br><b>Phone:</b> '.$phoneNumber' <b>Email:</b> '.$emailAddress.' <p>'.$message.'</p>";
$headers = "From: $from\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
if( mail($to, $subject, $message, $headers) ){
echo "success";
} else {
echo "The server failed to send the message. Please try again later.";
}
}
?>
【问题讨论】:
-
您需要将其缩小到服务器端或客户端问题
-
你的 JS 代码还在执行吗? type="submit" 的按钮将提交表单,该表单将“刷新”页面而不执行 Javascript。
-
看起来您根本不满足
IF条件,因此没有执行任何内容。让我们通过将以下内容放在第一行来看看一切是如何进入后端的:print "<PRE>".print_r($_POST[])."</PRE>";并与我们分享输出
标签: javascript php html forms email