У меня есть сценарий ajax, который помещает все мои данные в скрипт contact-form.php (email). Все работает, кроме флажков. Когда я получаю электронное письмо, он просто показывает пустое поле.Опубликовать несколько флажков с помощью ajax
Это код, который я получил в настоящее время:
<div class="col-md-6">
<h3 style="margin-top:30px;">Type raam</h3>
<div>
<label>
<input type="checkbox" name="checkbox" id="checkbox1" value="Kantel">
<span>Kantel</span>
</label>
</div>
<div>
<label>
<input type="checkbox" name="checkbox" id="checkbox2" value="Schuif">
<span>Schuif</span>
</label>
</div>
<div>
<label>
<input type="checkbox" name="checkbox" id="checkbox3" value="Deuropening">
<span>Deuropening</span>
</label>
</div>
<div>
<label>
<input type="checkbox" name="checkbox" id="checkbox4" value="Draai">
<span>Draai</span>
</label>
</div>
<div>
<label>
<input type="checkbox" name="checkbox" id="checkbox5" value="Draai/kantel">
<span>Draai/kantel</span>
</label>
</div>
</div>
Почтовый скрипт:
<?php
session_cache_limiter('nocache');
header('Expires: ' . gmdate('r', 0));
header('Content-type: application/json');
// Enter your email address
$to = '[email protected]';
$subject = $_POST['subject'];
if($to) {
$name = $_POST['name'];
$email = $_POST['email'];
$fields = array(
0 => array(
'text' => 'Naam',
'val' => $_POST['name']
),
1 => array(
'text' => 'Email adres',
'val' => $_POST['email']
),
2 => array(
'text' => 'Adres',
'val' => $_POST['adres']
),
3 => array(
'text' => 'Afleveradres',
'val' => $_POST['afleveradres']
),
4 => array(
'text' => 'Postcode',
'val' => $_POST['postcode']
),
5 => array(
'text' => 'Plaats',
'val' => $_POST['plaats']
),
6 => array(
'text' => 'Tweede plaats',
'val' => $_POST['plaats2']
),
7 => array(
'text' => 'Telefoonnummer',
'val' => $_POST['telefoonnr']
),
8 => array(
'text' => 'Mobiel nummer',
'val' => $_POST['mobielnr']
),
9 => array(
'text' => 'Type raam',
'val' => $_POST['checkbox']
),
10 => array(
'text' => 'Contactpersoon',
'val' => $_POST['contactpersoon']
),
11 => array(
'text' => 'Bericht',
'val' => $_POST['message']
)
);
$message = "";
foreach($fields as $field) {
$message .= $field['text'].": " . htmlspecialchars($field['val'], ENT_QUOTES) . "<br>\n";
}
$headers = '';
$headers .= 'From: ' . $name . ' <' . $email . '>' . "\r\n";
$headers .= "Reply-To: " . $email . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
if (mail($to, $subject, $message, $headers)){
$arrResult = array ('response'=>'success');
} else{
$arrResult = array ('response'=>'error');
}
echo json_encode($arrResult);
} else {
$arrResult = array ('response'=>'error');
echo json_encode($arrResult);
}
?>
Аякса сообщение:
// Ajax Submit
$.ajax({
type: "POST",
url: url,
data: {
"name": $("#contact-form #name").val(),
"email": $("#contact-form #email").val(),
"subject": $("#contact-form #subject").val(),
"adres": $("#contact-form #adres").val(),
"afleveradres": $("#contact-form #afleveradres").val(),
"postcode": $("#contact-form #postcode").val(),
"contactpersoon": $("#contact-form #contactpersoon").val(),
"plaats": $("#contact-form #plaats").val(),
"plaats2": $("#contact-form #plaats2").val(),
"telefoonnr": $("#contact-form #telefoonnr").val(),
"mobielnr": $("#contact-form #mobielnr").val(),
"checkbox": $("#contact-form #checkbox").map(function(){ return $(this).val(); }).get().join(","),
"message": $("#contact-form #message").val()
},
Теперь разделите результаты с запятой, но я не получаю никакого результата в моей почте. Любая идея, что я сделал не так?
Так что я должен дать всем флажкам один и тот же идентификатор, а затем использовать сериализацию? – twan
@twan - No. * Вам не разрешено использовать более одного элемента с данным ID *. Если вы используете 'serialize', то идентификаторы элементов управления формы не имеют значения (кроме ассоциирования с ними'
Таким образом, строка флажка будет выглядеть примерно так: '" checkbox ": $ (" # contact-form #checkbox "). Serialize,'? Нужно ли мне что-то менять в своем почтовом письме? – twan