Я использую emailjs для отправки электронной почты через мой бесплатный веб-сайт поддомена. С этим есть две проблемы. 1). Мой идентификатор учетной записи emailjs, идентификатор службы и идентификатор шаблона становятся общедоступными, поэтому любой может получить к ним доступ и отправить через него электронную почту. 2). чтобы решить эту проблему, я использовал следующий код, но он стал появляться в браузере "inspect Element" (инструмент разработчика).
<?php echo "
<script>
(function(){
emailjs.init(my user id);
})();
</script>" ; ?>
<?php
echo "<script src='js/formfilled.js'></script>";
?>
теперь моя кнопка отправки формы выглядит так
<button onclick = "email();">
Send
</button>
теперь мой файл formfill выглядит так
var myform = $("form#myform");
function email(){
var service_id = "default_service";
var template_id = "xxxxxxxxx";
myform.find("button").text("Sending...");
emailjs.sendForm(service_id,template_id,"myform")
.then(function(){
alert("Sent!");
myform.find("button").text("Send");
}, function(err) {
alert("Send email failed!\r\n Response:\n " + JSON.stringify(err));
myform.find("button").text("Send");
});
}
Проблема в том, что когда я нажимаю кнопку, а не отправляю электронное письмо, страница перезагружается. Извините, если это слишком глупо, я новичок и заранее спасибо.
ОБНОВИТЬ он работает, если я помещаю код в тот же файл (не используя внешний js) код:--
<head>
<script type = "text/javascript">
(function(){
emailjs.init("xxxxxxxxxxxxxxxxxxxxx");
})(); </head>
</script>
<body>
<!-- form is here-->
<script>
var myform = $("form#myform");
myform.submit(function(event){
event.preventDefault();
// Change to your service ID, or keep using the default service
var service_id = "default_service";
var template_id = "xxxxxxxxxxxxxxxxxxx";
myform.find("button").text("Sending...");
emailjs.sendForm(service_id,template_id,"myform")
.then(function(){
alert("Sent!");
myform.find("button").text("Send");
}, function(err) {
alert("Send email failed!\r\n Response:\n " + JSON.stringify(err));
myform.find("button").text("Send");
});
return false;
});
</script>
</body>
но если я помещу этот код в formfilled.js, он не работает. в чем причина этого?
@gaetanoM спасибо за беспокойство, пожалуйста, посмотрите код сейчас, когда он обновлен
Идеально! Вы добавили event.preventDefault ();. Другой вопрос: Как скрыть или защитить код javascript со стороны клиента.
@gaetanoM по-прежнему, если я помещаю тот же код во внешний файл, он не работает. Почему?
Взгляните на DOMContentLoaded



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Отвечать: использовать
event.preventDefault();
и загрузка файла до загрузки кнопки.
Тип кнопка по умолчанию - представить, и это может частично объяснить вашу проблему.