Как изменить форму электронной почты PHP (обратный раздел), чтобы она соответствовала шаблонам Javascript и html? - PullRequest
1 голос
/ 24 мая 2019

Недавно я опубликовал вопрос PHP Script не отправляет электронные письма и прочитал множество похожих тем на SO, например AJAX JQUERY HTML EMAIL , но ни одна из них не решила мою проблему.

Моя проблема в том, что, когда электронное письмо успешно отправлено (я проверяю его), часть HTML не запускается, и вся страница обновляется не как основной шаблон: (я думаю, что я не смог отправить ответ для PHP при отправке обратно на HTML ). Моя цель - просто изменить PHP-файл на работающий.

В основном шаблоне результат отправки электронных писем (отправленных или не отправленных) выполняется следующим образом, но в моей версии есть проблема, которая выглядит следующим образом:

enter image description here

HTML:

<div class="alert alert-success hidden animated fadeIn" id="contactSuccess">
   <strong>Success!</strong> Your message has been sent to us.
</div>

<div class="alert alert-danger hidden animated shake" id="contactError">
   <strong>Error!</strong> There was an error sending your message.
</div>

JavaScript:

jQuery(document).ready(function(e) {
    "use strict";
    e("#contact-form").validate({
        submitHandler: function(s) {
            var o = e(s),
                a = e("#contactSuccess"),
                t = e("#contactError"),
                r = e(this.submitButton);
            r.button("loading"), e.ajax({
                type: "POST",
                url: o.attr("action"),
                data: {
                    name: o.find("#name").val(),
                    email: o.find("#email").val(),
                    subject: o.find("#subject").val(),
                    message: o.find("#message").val()
                },
                dataType: "json",
                complete: function(s) {
                    return "object" == typeof s.responseJSON && "success" == s.responseJSON.response ? (a.removeClass("hidden"), t.addClass("hidden"), o.find(".controled").val("").blur().parent().removeClass("has-success").removeClass("has-error").find("label.error").remove(), o.find(".controled").removeClass("error"), a.offset().top - 80 < e(window).scrollTop() && e("html, body").animate({
                        scrollTop: a.offset().top - 80
                    }, 300), r.button("reset"), void e(".controled").keyup(function() {
                        a.addClass("hidden")
                    })) : (t.removeClass("hidden"), a.addClass("hidden"), o.find(".controled").val("").blur().parent().removeClass("has-success").removeClass("has-error").find("label.error").remove(), t.offset().top - 80 < e(window).scrollTop() && e("html, body").animate({
                        scrollTop: t.offset().top - 80
                    }, 300), o.find(".has-success").removeClass("has-success"), r.button("reset"), void e(".controled").keyup(function() {
                        t.addClass("hidden")
                    }))
                }
            })
        }
    })
});

PHP:

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">

        window.location = 'contact_page.html#contactSuccess';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">

        window.location = 'contact_page.html#contactError';
    </script>
<?php
}

1 Ответ

3 голосов
/ 24 мая 2019

Почему вы просто выводите URL на стороне php, а затем на стороне javascript вызываете нужный вам скрипт:

PHP Side

$mail_status = mail($mail_to, $subject, $body_message, $headers);
if ($mail_status) {
    echo "{'url':'contact_page.html#contactSuccess'}";
} else {
    echo "{'url':'contact_page.html#contactError'}";
}

Javascript Side

complete: function(){
   ...
   window.location = s.responseJSON.url
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...