В настоящее время я пытаюсь разработать свое первое расширение chrome на основе веб-приложения, которое у меня уже есть на другом сервере в качестве веб-сайта.
Все работает нормально, за исключением раздела с формой ajax, которая отправляет информацию в PHP файл, который отправляет почту. (простая контактная форма, использующая ajax для отображения сообщения об успехе вместо изменения или перезагрузки моей страницы)
я знаю, что наш браузер не может даже выполнить PHP, так как это язык на стороне сервера, поэтому есть ли способ сделать эту форму функциональной? (и это дает тот же результат, что и на веб-сервере?
Очевидно, я ищу форму, которая может работать с расширением chrome, и отправляю электронное письмо на нужный адрес, который будет отображать сообщение об успешном выполнении при отправке. (без перезагрузки или новой страницы)
(Расширение не основано на почте, это кошелек криптовалюты. Есть только контактная форма с 1 входом внизу.)
php:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$mail_to = "test@yopmail.com";
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
if ( empty($email)) {
http_response_code(400);
echo "Please complete the form and try again.";
exit;
}
# Mail Content
$content .= "New token demand\n\n";
$content .= "Email: $email\n\n";
# email headers.
$headers = "From: New user";
$success = mail($mail_to, $subject, $content, $headers);
if ($success) {
http_response_code(200);
echo "Thank You! Your message has been sent.";
} else {
http_response_code(500);
echo "Oops! Something went wrong, we couldn't send your message.";
}
} else {
http_response_code(403);
echo "There was a problem with your submission, please try again.";
}
?>
jquery (. js)
(function ($) {
'use strict';
var form = $('.contact__form'),
message = $('.contact__msg'),
form_data;
// Success function
function done_func(response) {
message.fadeIn().removeClass('alert-danger').addClass('alert-success');
message.text(response);
setTimeout(function () {
message.fadeOut();
}, 2000);
form.find('input:not([type="submit"]), textarea').val('');
}
// fail function
function fail_func(data) {
message.fadeIn().removeClass('alert-success').addClass('alert-success');
message.text(data.responseText);
setTimeout(function () {
message.fadeOut();
}, 2000);
}
form.submit(function (e) {
e.preventDefault();
form_data = $(this).serialize();
$.ajax({
type: 'POST',
url: form.attr('action'),
data: form_data
})
.done(done_func)
.fail(fail_func);
});
})(jQuery);
форма (html)
<form novalidate="" class="contact__form" method="post" action="mailnews.php">
<!-- form message -->
<div class="row">
<div class="col-12">
<div class="alert contact__msg alert-success"
style="display: none;" role="alert">Thanks ?</div>
</div>
</div>
<!-- end message -->
<!-- form element -->
<div class="row">
<div class="col-md-6 form-group" style="">
<input name="email" type="email" class="form-control"
placeholder="Wallet Address" required="" style="">
</div>
<div class="col-12" style="">
<input name="submit" type="submit" class="btn btn success" value="Get tokens">
</div>
</div>
<!-- end form element -->
</form>
Вот что я получаю на chrome расширении при подаче