Как заставить пост 405 метод работать на php - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть форма:

 <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>

У меня есть php

<?
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'];
}
?>

и у меня есть js:

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);

, но он отказывается работать,У меня проблема в консоли: POST http://localhost:8080/mail.php 405 (метод не разрешен), и я не могу получить сообщение по электронной почте, которую я ввожу в форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...