Javascript 如何使post 405方法在php上工作
我有表格:Javascript 如何使post 405方法在php上工作,javascript,php,forms,http,Javascript,Php,Forms,Http,我有表格: <h2>Форма обратной связи на PHP</h2> <form action="mail.php" method="post" onSubmit="return checkForm(this)" id="feedback-form"> <fieldset> <legend>Оставьте сообщение:</legend> <div class="row"&g
<h2>Форма обратной связи на PHP</h2>
<form action="mail.php" method="post" onSubmit="return checkForm(this)" id="feedback-form">
<fieldset>
<legend>Оставьте сообщение:</legend>
<div class="row">
<label class="col-25">Ваше имя:</label>
<input type="text" name="name" class="col-75 name">
</div>
<div class="row">
<label class="col-25">E-mail:</label>
<input type="text" name="email" class="col-75 email">
</div>
<div class="row">
<label class="col-25">Номер телефона:</label>
<input type="text" name="phone" class="col-75 tel">
</div>
<div class="row">
<label class="col-25">Сообщение:</label>
<textarea rows="10" cols="45" name="message" class="col-75"></textarea>
</div>
<input type="submit" value="Отправить сообщение">
</fieldset>
</form>
但它拒绝工作。控制台中有一个问题:
405号岗位(不允许使用方法)
我可以;我在表格中输入的电子邮件中没有收到邮件 我不认为这是问题所在,但我不会将
onSubmit
属性与addEventListener('submit')
混合使用,尤其是当您没有显示checkForm
函数中的内容时。只需在事件侦听器中运行checkForm
<?
if (array_key_exists('message', $_POST)) {
$to = 'свой@yandex.ru';
$subject = 'Заполнена контактная форма с '.$_SERVER['HTTP_REFERER'];
$subject = "=?utf-8?b?". base64_encode($subject) ."?=";
$message = "Имя: ".$_POST['name']."\nEmail: ".$_POST['email']."\nIP: ".$_SERVER['REMOTE_ADDR']."\nСообщение: ".$_POST['message'];
$headers = 'Content-type: text/plain; charset="utf-8"';
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Date: ". date('D, d M Y h:i:s O') ."\r\n";
mail($to, $subject, $message, $headers);
echo $_POST['name'];
}
?>
document.getElementById('feedback-form').addEventListener('submit', function(evt){
var http = new XMLHttpRequest(), f = this;
evt.preventDefault();
http.open("POST", "mail.php", true);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.send("name=" + f.name.value + "&email=" + f.email.value + "&message=" + f.message.value);
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении 2-х дней.\nБлагодарим за интерес к нашей фирме!');
f.messageFF.removeAttribute('value');
f.messageFF.value='';
}
}
http.onerror = function() {
alert('Извините, данные не были переданы');
}
}, false);