Моя контактная форма выбрасывает 405 (метод не допускается ошибка). Он работал правильно месяц назад. Я отправляю данные с помощью ajax в php-скрипт для обработки. Я использую виртуальный хостинг для хостинга сайта. Я не знаком с конфигурацией серверов .net и Microsoft IIS. Другие подобные вопросы предлагают внести некоторые изменения в файл web.config, но я не могу исправить эту ошибку. Мой HTML код —
<!-- Form Name -->
<legend>Fill the form below</legend>
<div class="form-group clearfix">
<label class="col-md-4 control-label">First Name</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input name="firstname" id="firstname" placeholder="First Name" class="form-control" type="text" value="" required>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="form-group clearfix">
<label class="col-md-4 control-label">Last Name</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input name="lastname" id="lastname" placeholder="Last Name" class="form-control" type="text" value="" required>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="form-group clearfix">
<label class="col-md-4 control-label">E-Mail</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-envelope"></i></span>
<input name="email" id="email" type="email" placeholder="E-Mail Address" class="form-control" type="text" value="" required>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="form-group clearfix">
<label class="col-md-4 control-label">Phone </label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-earphone"></i></span>
<input name="phone" id="phone" type="text" pattern="^(\d{10})$" data-pattern-error="Enter 10 digit mobile number" placeholder="Enter ten digit phone number" class="form-control" type="text" value="" required>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="form-group clearfix">
<label class="col-md-4 control-label">Proposal Description</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-pencil"></i></span>
<textarea class="form-control" id="message" type="text" name="message" placeholder="Proposal Description" required></textarea>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<!-- Button -->
<div class="form-group clearfix">
<label class="col-md-4 control-label"></label>
<div class="col-md-4">
<button type="submit" name="submit" id="form-submit" class="btn btn-success btn-lg">Send<span class="glyphicon glyphicon-send"> </button>
</div>
</div>
</fieldset>
</form>
Мой код Ajax —
function submitForm(){
// Initiate Variables With Form Content
var firstname = $("#firstname").val();
var lastname = $("#lastname").val();
var phone = $("#phone").val();
var email = $("#email").val();
var message = $("#message").val();
console.log("Sending form for processing");
$.ajax({
type: "POST",
url: "form-process.php",
data: "firstname=" + firstname + "&lastname=" + lastname + "&phone=" + phone +"&email=" + email + "&message=" + message,
success : function(text){
if (text == "success"){
console.log("Form submitted");
formSuccess();
} else {
formError();
submitMSG(false,text);
}
}
});
}
Мой PHP-код —
$errorMSG = "";
// NAME
if (empty($_POST["firstname"])) {
$errorMSG = "First name is required ";
} else {
$firstname = $_POST['firstname'];
}
if (empty($_POST["lastname"])) {
$errorMSG = "Last name is required ";
} else {
$lastname = $_POST['lastname'];
}
if (empty($_POST["phone"])) {
$errorMSG = "Phone number is required ";
} else {
$phone = $_POST['phone'];
}
// EMAIL
if (empty($_POST["email"])) {
$errorMSG .= "Email is required ";
} else {
$email = $_POST['email'];
}
// MESSAGE
if (empty($_POST["message"])) {
$errorMSG .= "Message is required ";
} else {
$message = $_POST["message"];
}
$body ="From: ".$firstname." ".$lastname."\n Phone: ".$phone."\n E-Mail: ".$email."\n Message: ".$message;
$to = "[email protected]";
$subject = "New message from ".$firstname;
$from = "[email protected]";
// If there are no errors, send the email
$success = mail($to, $subject, $body, $from);
// redirect to success page
if ($success && $errorMSG == ""){
echo "success";
}else{
if($errorMSG == ""){
echo "Something went wrong :(";
} else {
echo $errorMSG;
}
}
Я не могу использовать эти глаголы http — POST, PUT, DELETE
Я использую метод POST через AJAX для отправки данных на сервер в PHP. Ответ, возвращаемый сервером —
Allow: GET, HEAD, OPTIONS, TRACE
Content-Type: text/html
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
X-Powered-By-Plesk: PleskWin
Content-Length: 1117
Мой файл web.config —
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<tracing>
<traceFailedRequests>
<add path="*">
<traceAreas>
<add provider="WWW Server" areas="Authentication,Cache,CGI,Compression,Filter,Module,RequestNotifications,RequestRouting,Rewrite,Security,StaticFile" verbosity="Verbose" />
</traceAreas>
<failureDefinitions statusCodes="405" />
</add>
</traceFailedRequests>
</tracing>
</system.webServer>
</configuration>
Вот выходные данные от Трассировки Сбойных запросов от сервера IIS
Event - MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName StaticFileModule
Notification 128
HttpStatus 405
HttpReason Method Not Allowed
HttpSubStatus 0
ErrorCode 2147942401
ConfigExceptionInfo
Notification EXECUTE_REQUEST_HANDLER
ErrorCode Incorrect function. (0x80070001)
Module Name - StaticFileModule
GET, HEAD, POST, DEBUG, DELETE, PUT — эти методы HTTP разрешены в обработчике веб-сайта.
Задача ещё не решена.
Других решений пока нет …