Мой скрипт contact.php успешно обрабатывает отправку электронных писем.
Однако при отправке формы в index.html вместо отображения ожидаемого сообщения об успехе в классе .send-message браузер отображает сообщение об ошибке в формате JSON.
Несмотря на попытку использовать AJAX, запрос не запускается должным образом, и сообщение об ошибке сохраняется, а не показывает желаемое сообщение об успехе, заключенное в
В моем index. html, есть форма «Свяжитесь с нами», которая отправляет электронное письмо через POST на contact.php. contact.php обрабатывает форму с помощью PHPMailer и возвращает true или false в index.html.
Сообщение об ошибке, показанное на рисунке, — это $responseString< /code> из contact.php.
Эта проблема связана только с двумя файлами: index.html и contact.php, которые несут ответственность за обработку контактной формы. Однако я не уверен, почему сообщение об ошибке работает неправильно.
Может ли кто-нибудь дать рекомендации по решению этой проблемы?
Contact.php
Код: Выделить всё
$mail->send();
// Manually construct success response
$responseString = '{"success": true, "message": "Your message has been sent. Thank you!"}';
} catch (Exception $e) {
// Manually construct error response
$responseString = '{"success": false, "message": "Failed to send the message. Please try again later."}';
}
header('Content-Type: application/json');
echo $responseString;
Код: Выделить всё
Loading
Your message has been sent. Thank you!
Send Message
Код: Выделить всё
$(document).ready(function() {
$('.php-email-form').on('submit', function(e) {
e.preventDefault(); // Prevent default form submission
var formData = $(this).serialize();
$.ajax({
type: 'POST',
url: 'forms/contact.php', // Make sure the path is correct
data: formData,
dataType: 'json', // Expect JSON response from the server
success: function(response) {
if (response.success) {
$('.error-message').hide(); // Hide any previous error message
$('.sent-message').text(response.message).show(); // Show success message
} else {
$('.sent-message').hide(); // Hide any previous success message
$('.error-message').text(response.message).show(); // Show error message
}
$('.loading').hide(); // Hide the loading indicator
},
error: function() {
$('.loading').hide(); // Hide the loading indicator
$('.sent-message').hide(); // Hide any previous success message
$('.error-message').text('An error occurred. Please try again later.').show(); // Show fallback error message
}
});
});
});
Источник: https://stackoverflow.com/questions/781 ... s-expected
Мобильная версия