@Egche
Ученье-свет.

То ли _POST не работает, то ли serialize на js отправляет что то не то, глянем?

Стремлюсь писать на чистом 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, но где?
  • Вопрос задан
  • 459 просмотров
Пригласить эксперта
Ответы на вопрос 2
@alexmixaylov
сделайте var_dump($_POST);
в обработчике

посмотрите что приходит вообще к обработчику
Ответ написан
Комментировать
@SergeyZelensky-Rostov
JSON.parse – читает объекты из строки в формате JSON
JSON.stringify – превращает объекты в строку в формате JSON
берешь ляпаешь значение формы в один объект, хегачешь через JSON.stringify а на сервере преобразуешь в массив через json_decode() и не будет проблем
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы