Ich habe einen JavaScript-Code geschrieben, der Eingaben von einem Kontaktformular verarbeitet. Unter Verwendung von Ajax sende ich die Eingabeinformationen an das Backend, um eine E-Mail zu senden.Email wird mehrmals gesendet
Es scheint jedoch, dass mein Code irgendwie mehrere E-Mails anstatt einer sendet. Die Nachricht "E-Mail wird gesendet" wird einige Male angezeigt.
Kann mir jemand sagen, was schief gelaufen ist?
JavaScript-Code:
$(document).on('click', '.individual_contact', function(e) {
e.preventDefault();
var user_name = $('span#user-name').text();
var recipient_name = $(this).attr('data-ind');
console.log('recipient_name='+recipient_name);
$("div#content").hide('fast');
$("#section-form").show('fast');
$("#section-form #recipient").attr('data-contact', recipient_name);
$("#section-form #recipient").attr('placeholder', 'TO: '+recipient_name.toUpperCase());
$("#section-form #name").val('FROM: '+user_name.toUpperCase());
$('.submit_icontact').click(function(e) {
var subject = $('input#subject').val();
var message = $('textarea#message').val();
e.preventDefault();
var form = new FormData();
form.append('user_email', ajaxobject.user_id);
form.append('user_name', user_name);
form.append('recipient_name', recipient_name);
form.append('subject', subject);
form.append('message', message);
form.append('action', 'contact_individual');
console.log(form);
$.ajax({
type: 'POST',
url: ajaxobject.ajaxurl,
enctype: 'multipart/form-data',
cache: false,
contentType: false,
processData: false,
data: form,
dataType: 'json',
success: function(response) {
console.log('Email is sent');
},
error:function(err){
console.log('err,error')
}
});
});
})
Jedes Mal, wenn Sie auf .individual_contact klicken, es fügt einen weiteren Ereignishandler zu .submit_icontact hinzu und klickt so auf .individuell _contact bedeutet einmal, dass das Klicken auf .submit_icontact 1 E-Mail sendet, das Klicken auf .individual_contact zweimal bedeutet .submit_icontact sendet 2 E-Mails usw. Sie sollten den Ereignishandler nur einmal .submit_icontact zuweisen. – James
Vielen Dank für Ihre Erklärung. Du hattest Recht. @ James – ApplePie