【发布时间】:2021-12-29 18:13:41
【问题描述】:
我正在尝试将复选框值传递给 PHP,但兴趣字段显示为空白。我需要显示所有检查的兴趣值。并发出一封电子邮件。我已经包括了所有三个部分。所有其他字段均正常显示。
这是 HTML 部分
<form id="register-form" class="register-form register" action="php/register.php" method="post">
<input class="register-input name-input white-input" required="" name="register_names" placeholder="Full Name*" type="text">
<input class="register-input name-email white-input" required="" name="register_phone" placeholder="Phone*" type="text">
<input class="register-input name-email white-input" required="" name="register_email" placeholder="Email Adress*" type="email">
<input class="register-input name-email white-input" name="register_company" placeholder="Company" type="text">
<table cellspacing="8" cellpadding="0">
<tr>
<td><input class="register-input name-email white-input" name="register_city" placeholder="City" type="text"></td>
<td width="10"> </td>
<td><input class="register-input name-email white-input" name="register_zip" placeholder="Zip" type="text"></td>
</tr>
</table>
<table cellspacing="8" cellpadding="8">
<tr><fieldset>
<td>
<input type="checkbox" name="interests[]" value="Practice" /> Practice<br />
<input type="checkbox" name="interests[]" value="Training" /> Training<br />
<input type="checkbox" name="interests[]" value="Workout" /> Workout<br />
</td>
</fieldset>
</tr>
</table>
<input value="Submit Request" class="register-submit" type="submit">
</form>
这是用于验证的 JQuery 部分
$('#register-form').each( function(){
var form = $(this);
//form.validate();
form.submit(function(e) {
if (!e.isDefaultPrevented()) {
jQuery.post(this.action,{
'names':$('input[name="register_names"]').val(),
'email':$('input[name="register_email"]').val(),
'phone':$('input[name="register_phone"]').val(),
'company':$('input[name="register_company"]').val(),
'city':$('input[name="register_city"]').val(),
'zip':$('input[name="register_zip"]').val(),
'interests':$('checkbox[name="interests"]').val(),
},function(data){
form.fadeOut('fast', function() {
$(this).siblings('p.register_success_box').show();
});
});
e.preventDefault();
}
});
})
最后,这是生成电子邮件的 PHP 部分
<?php
$field_first_name = $_POST['names'];
$field_email = $_POST['email'];
$field_phone = $_POST['phone'];
$field_company = $_POST['company'];
$field_city = $_POST['city'];
$field_zip = $_POST['zip'];
$interests = (is_array($_POST['interests']) ? $_POST['interests'] : []);
$interests = (count($interests) > 0 ? implode(',', $interests) : 'none');
$mail_to = 'to@email.com';
$subject = 'Message from a landing page visitor '.$field_first_name;
$body_message = 'From: '.$field_first_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Phone: '.$field_phone."\n";
$body_message .= 'Company: '.$field_company."\n";
$body_message .= 'City: '.$field_city."\n";
$body_message .= 'Zip: '.$field_zip."\n";
$body_message .= 'Interests: '.trim($interests).' ';
$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";
$mail_status = mail($mail_to, $subject, $body_message, $headers);
if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
----------
window.location = 'index.html';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
window.location = 'index.html';
</script>
<?php
}
?>
【问题讨论】:
-
$('checkbox[name="interests"]').val()在浏览器控制台中运行它会给你什么? -
没有显示空白。 “兴趣:”
-
对不起。它读作“兴趣:无”
-
我对此表示怀疑,因为您的电子邮件应该是这样的。再问:在浏览器控制台运行jQuery选择器返回给你什么?
-
需要明确的是,您还没有 PHP Mailer 问题,您只有 jQuery/AJAX/form 问题,对吧?继续努力,通过 HTTP 到 PHP,暂时完全忽略电子邮件,只需记录和/或转储。此外,当你调试它时,你的淡入淡出可能会导致更多问题,你可能想暂时禁用它。