Стремлюсь писать на чистом js. Нашел скрипт для отправки формы – serialize().
function serialize(form) {
if (!form || form.nodeName !== "FORM") {
return;
}
var i, j, q = [];
for (i = form.elements.length - 1; i >= 0; i = i - 1) {
if (form.elements[i].name === "") {
continue;
}
switch (form.elements[i].nodeName) {
case 'INPUT':
switch (form.elements[i].type) {
case 'text':
case 'hidden':
case 'password':
case 'button':
case 'reset':
case 'submit':
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break;
case 'checkbox':
case 'radio':
if (form.elements[i].checked) {
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
}
break;
case 'file':
break;
}
break;
case 'TEXTAREA':
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break;
case 'SELECT':
switch (form.elements[i].type) {
case 'select-one':
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break;
case 'select-multiple':
for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) {
if (form.elements[i].options[j].selected) {
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].options[j].value));
}
}
break;
}
break;
case 'BUTTON':
switch (form.elements[i].type) {
case 'reset':
case 'submit':
case 'button':
q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
break;
}
break;
}
}
return q.join("&");
}
Отправляю данные на сервер и через mail.php себе на почту
$name = $_POST['name'];
$select = $_POST['select'];
$email = $_POST['mail'];
$phone = $_POST['phone'];
$comment = $_POST['description'];
$message = "Имя: {$name},\r\nПочта: {$email},\r\nТелефон: {$phone},\r\nКомментарии: {$comment}";
$to = "fio@mail.ru";
$subject = "Заявка";
$from = "info@giraffe-ra.ru";
$headers = "From: $from";
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
Просматриваю строку, которая отправляется на сервер в консоле, все в порядке, уходит в корректном виде, а на почту приходит письмо без переменных.
С этим же кодом в mail.php на сервере, serialize() от jQuery работает корректно, видимо ошибка в js serialize, но где?