Я верстальщик. Появилась необходимость сделать форму с прикреплением файла. На тестовом хостинге код работает отлично, НО перенес сайт на wordpress и выдает ошибку в консоли: POST
https://rf-car.ru/pokraska-avto/multisend.php 404, ошибка в строке - xhr.send(formData);
Подскажите, пожалуйста, что не так.
Вот код:
<!-- Modal window start -->
<div id="wrapper-modal">
<div id="overlay"></div>
<div id="modal-window">
<form action="#" method="post" class="modal-window__form" id="sendform" enctype="multipart/form-data">
<fieldset>
<h3 class="modal-window__title">
Заполните форму
</h3>
<input name="name" value="" size="40" type="text" class="required" required placeholder="Имя"
autocomplete="off" />
<input name="tel" value="" size="40" class="required" required type="tel"
placeholder="Номер телефона" autocomplete="off" />
<input name="email" value="" size="40" type="email" placeholder="E-mail" autocomplete="off" />
<textarea name="message" placeholder="Комментарий"></textarea>
<input name="file[]" value="1" size="40" type="file" multiple />
<input class="form__btn btnHome" value="Отправить" name="sendMail" type="submit" />
</fieldset>
</form>
</div>
</div>
<!-- Modal window end -->
// Как только страничка загрузилась
window.onload = function () {
// проверяем поддерживает ли браузер FormData
if(!window.FormData) {
alert("Браузер не поддерживает загрузку файлов на этом сайте");
}
}
jQuery(document).ready(function(){
// =validation
var errorTxt = 'Ошибка отправки';
jQuery("#sendform").validate({
submitHandler: function(form){
var form = document.forms.sendform,
formData = new FormData(form),
xhr = new XMLHttpRequest();
xhr.open("POST", "multisend.php");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status == 200) {
jQuery("#sendform").html('<p class="thank">Заявка отправлена. Мы свяжемся с Вами в ближайшее время<p>');
}
}
};
xhr.send(formData);
}
});
})
function sendSuccess(callback){
jQuery(callback).find("form fieldset").html(thank);
startClock();
}
<?php
$to = 'okei.701@mail.ru';
if ( isset( $_POST['sendMail'] ) ) {
$name = substr( $_POST['name'], 0, 64 );
$tel = substr( $_POST['tel'], 0, 64 );
$email = substr( $_POST['email'], 0, 64 );
$message = substr( $_POST['message'], 0, 250 );
if($_FILES)
{
$filepath = array();
$filename = array();
$file2 = array();
$i = 0;
foreach ($_FILES["file"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$filename[$i][0] = $_FILES["file"]["tmp_name"][$key];
$filename[$i][1] = $_FILES["file"]["name"][$key];
$i++;
}
}
}
$body = "Имя:\r\n".$name."\r\n\r\n";
$body .= "Контактный номер:\r\n".$tel."\r\n\r\n";
$body .= "E-mail:\r\n".$email."\r\n\r\n";
$body .= "Комментарий к заявке:\r\n".$message;
send_mail($to, $body, $email, $filename);
}
// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($to, $body, $email, $filename)
{
$subject = 'Заявка с сайта ("REFRESH CAR")';
$boundary = "--".md5(uniqid(time())); // генерируем разделитель
$headers = "From: ".$email."\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
$multipart = "--".$boundary."\r\n";
$multipart .= "Content-type: text/plain; charset=\"utf-8\"\r\n";
$multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
$body = $body."\r\n\r\n";
$multipart .= $body;
foreach ($filename as $key => $value) {
$fp = fopen($value[0], "r");
$content = fread($fp, filesize($value[0]));
fclose($fp);
$file .= "--".$boundary."\r\n";
$file .= "Content-Type: application/octet-stream\r\n";
$file .= "Content-Transfer-Encoding: base64\r\n";
$file .= "Content-Disposition: attachment; filename=\"".$value[1]."\"\r\n\r\n";
$file .= chunk_split(base64_encode($content))."\r\n";
}
$multipart .= $file."--".$boundary."--\r\n";
mail($to, $subject, $multipart, $headers);
}
?>