добавление переключателей в контактную форму PHP / AJAX - PullRequest
0 голосов
/ 10 января 2020

Я не могу добавить радио-кнопки в мою контактную форму (PHP + AJAX). Код работает нормально с обычными входами, но когда я пытаюсь добавить переключатели после нажатия кнопки «Отправить», это просто перезагружает страницу. Я пытался использовать:

formdata.append( "input[name='group_name']:checked", _("input[name='group_name']:checked").value ); 

или

formdata.append( "input:radio[name=group_name] :selected", _("input:radio[name=group_name] :selected").value );

, но это не работает.

HTML код:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Website Contact Form</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
function _(id){ return document.getElementById(id); }
function submitForm(){
	_("mybtn").disabled = true;
	_("status").innerHTML = 'please wait ...';
	var formdata = new FormData();
	formdata.append( "n", _("n").value );
	formdata.append( "e", _("e").value );
	formdata.append( "m", _("m").value );
    var group_name = $(".group_name:checked").val();
	var ajax = new XMLHttpRequest();
	ajax.open( "POST", "example_parser.php" );
	ajax.onreadystatechange = function() {
		if(ajax.readyState == 4 && ajax.status == 200) {
			if(ajax.responseText == "success"){
				_("my_form").innerHTML = '<h2>Thanks '+_("n").value+', your message has been sent.</h2>';
			} else {
				_("status").innerHTML = ajax.responseText;
				_("mybtn").disabled = false;
			}
		}
	}
	ajax.send( formdata );
}
</script>
</head>
<body>
<form id="my_form" onsubmit="submitForm(); return false;">
  <p><input id="n" placeholder="Name" required></p>
  <p><input id="e" placeholder="Email Address" type="email" required></p>
    <p>Select your option:</p>
  <input id="r1" type="radio" class="group_name" name="group_name" value="option1">
  <label for="r1">Option1</label>
  <input id="r2" type="radio" class="group_name" name="group_name" value="option2">
  <label for="r2">Option2</label>
  <br /> <br />
  <textarea id="m" placeholder="write your message here" rows="10" required></textarea>
  <p><input id="mybtn" type="submit" value="Submit Form"> <span id="status"></span></p>
</form>
</body>
</html>

и PHP парсер

if( isset($_POST['n']) && isset($_POST['e']) && isset($_POST['m']) ){
$n = $_POST['n']; 
$e = $_POST['e'];
$r1 = $_POST['.group_name:checked'];
$m = nl2br($_POST['m']);
$to = "email_adress"; 
$from = $e;
$subject = 'Contact Form Message';
$message = '<b>Name:</b> '.$n.' <br><b>Email:</b> '.$e.' '.$r1.' <p>'.$m.'</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.";
}
}

Есть идеи? Я потратил целый день, чтобы понять это. Помогите! : D

...