Angular «Uncaught error: зона уже загружена» - PullRequest
0 голосов
/ 13 сентября 2018

Ошибки в консоли

Я использую плагин Mailchimp Ajax Submit jQuery для отправки электронной почты с использованием файла PHP в форме контакта в шаблоне веб-сайта, который я импортировал в свое приложение Angular.Когда я вхожу, чтобы ввести свои данные в форму и отправить, страница обновляется по запросу POST.

Затем консоль выдает следующие две ошибки:

[Устарение] Синхронный XMLHttpRequest

[Deprecation] Synchronous XMLHttpRequest 
on the main thread is deprecated because of its detrimental effects to the 
end user's experience. For more help, check https://xhr.spec.whatwg.org/.
(anonymous) @ polyfills.c5fb4ffca9c225046d5a.js:1
polyfills.c5fb4ffca9c225046d5a.js:1 

Неопознанная ошибка: зона уже загружена.

Uncaught Error: Zone already loaded.
at polyfills.c5fb4ffca9c225046d5a.js:1
at polyfills.c5fb4ffca9c225046d5a.js:1
at Object.0TWp (polyfills.c5fb4ffca9c225046d5a.js:1)
at p (<anonymous>:1:507)
at Object.hN/g (polyfills.c5fb4ffca9c225046d5a.js:1)
at p (<anonymous>:1:507)
at Object.5 (polyfills.c5fb4ffca9c225046d5a.js:1)
at p (<anonymous>:1:507)
at n (<anonymous>:1:376)
at e (<anonymous>:1:248)

Мне трудно понять причину проблемы.Я пытался предотвратить обновление страницы при отправке с использованием <button type="button">, это не приводит к обновлению страницы, однако не вызывает POST-запрос, как ожидалось.Я также попытался удалить комментарий import 'zone.js/dist/zone'; в polyfills.ts

Я хочу завершить отправку электронной почты на той же странице без обновления в приложении Angular, если не найдется лучшая альтернатива,(Я учусь)

main.js

var clContactForm = function() {

    /* local validation */
    $('#contactForm').validate({

        /* submit via ajax */
        submitHandler: function(form) {

            var sLoader = $('.submit-loader');

            $.ajax({

                type: "POST",
                url: "inc/sendEmail.php",
                data: $(form).serialize(),
                beforeSend: function() { 

                    sLoader.slideDown("slow");

                },
                success: function(msg) {

                    // Message was sent
                    if (msg == 'OK') {
                        sLoader.slideUp("slow"); 
                        $('.message-warning').fadeOut();
                        $('#contactForm').fadeOut();
                        $('.message-success').fadeIn();
                    }
                    // There was an error
                    else {
                        sLoader.slideUp("slow"); 
                        $('.message-warning').html(msg);
                        $('.message-warning').slideDown("slow");
                    }

                },
                error: function() {

                    sLoader.slideUp("slow"); 
                    $('.message-warning').html("Something went wrong. Please try again.");
                    $('.message-warning').slideDown("slow");

                }

            });
        }

    });
};

sendEmail.php

<?php

// Replace this with your own email address
$siteOwnersEmail = 'my-email';


if($_POST) {

$name = trim(stripslashes($_POST['contactName']));
$email = trim(stripslashes($_POST['contactEmail']));
$subject = trim(stripslashes($_POST['contactSubject']));
$contact_message = trim(stripslashes($_POST['contactMessage']));

// Check Name
if (strlen($name) < 2) {
    $error['name'] = "Please enter your name.";
}
// Check Email
if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
    $error['email'] = "Please enter a valid email address.";
}
// Check Message
if (strlen($contact_message) < 15) {
    $error['message'] = "Please enter your message. It should have at least 15 characters.";
}
// Subject
if ($subject == '') { $subject = "Contact Form Submission"; }


// Set Message
$message .= "Email from: " . $name . "<br />";
$message .= "Email address: " . $email . "<br />";
$message .= "Message: <br />";
$message .= $contact_message;
$message .= "<br /> ----- <br /> This email was sent from your site's contact form. <br />";

// Set From: header
$from =  $name . " <" . $email . ">";

// Email Headers
$headers = "From: " . $from . "\r\n";
$headers .= "Reply-To: ". $email . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";


if (!$error) {

    ini_set("sendmail_from", $siteOwnersEmail); // for windows server
    $mail = mail($siteOwnersEmail, $subject, $message, $headers);

    if ($mail) { echo "OK"; }
    else { echo "Something went wrong. Please try again."; }

} # end if - no validation error

else {

    $response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null;
    $response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;
    $response .= (isset($error['message'])) ? $error['message'] . "<br />" : 
null;

        echo $response;

    } # end if - there was a validation error

}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...