Ich habe derzeit ein einfaches einfaches Newsletter-Anmeldeformular in der Fußzeile unserer Website mit nur einem E-Mail-Textfeld. Wir möchten wissen, auf welcher Sprachversion unsere Abonnenten unser Formular ausfüllen. (domain.com/ nl /. de /. es usw.).MailChimp API und AJAX fügen ein verstecktes Feld hinzu
Ich habe ein verstecktes Feld hinzugefügt, das den Wert der aktuellen Sprache erhält.
<li>
<label for="footer-newsletter-input"><?php __("nav.newsletter.youremail"); ?></label>
<input type="text" id="footer-newsletter-input" class="font-MuseoSans100 validate" data-validationtype="email">
</li>
<li class="hidden">
<input type="text" id="footer-newsletter-input-language" class="font-MuseoSans100" value="<?php echo isset(Language::$short) ? Language::$short : 'en'; ?>">
</li>
Dies funktioniert.
Unsere aktuellen initNewsletter: function() ist wie folgt:
initNewsletter: function() {
$(document).on('submit', '#newsletter_form', function(e){
e.preventDefault();
$('#newsletter-holder p.error').hide();
if($(this).hasClass('loading')) return;
var form = $(this),
valid = checkForm(form),
email = $('#footer-newsletter-input').val();
??? shortlangcode = $('#footer-newsletter-input-language'); ???
if(valid) {
form.addClass('loading');
$.ajax({
type: 'post',
url: '/support/subscribe',
data: 'email=' + email, ??????
success: function(data){
form.removeClass('loading');
data = $.parseJSON(data);
if(data.status && data.status === 'error') {
$('#newsletter-holder').append('<p class="error font-MuseoSans100">' + window.globalTranslations.newsletter_error + '</p>');
} else {
$('#newsletter-inputs').fadeOut(150, function(){
$('#newsletter-thanks').show();
});
}
},
error: function(){
$('#newsletter-holder').append('<p class="error font-MuseoSans100">' + window.globalTranslations.newsletter_error + '</p>');
}
});
}
});
},
Und der Controller sieht wie folgt aus:
public function subscribe() {
// API KEY
$apikey = '????';
$listid = '????';
$MailChimp = new MailChimp($apikey);
$result = $MailChimp->call('lists/subscribe', array(
'id' => $listid,
'email' => array('email'=>$_POST['email']),
//'merge_vars' => array('FNAME'=>$_POST['fname'], 'LNAME'=>$_POST['lname']),
'double_optin' => true,
'update_existing' => true,
'replace_interests' => false,
'send_welcome' => false,
));
echo json_encode($result);
}
Was ist das Problem? – TooMuchPete
Ich kann nicht herausfinden, wie man den Wert der Eingabe mit ID = "footer-newsletter-input-language" an mailchimp sendet. Ich denke, ich muss den Wert in initNewsletter deklarieren: function() und mit Ajax-Post senden. (Ich habe ???? an der Stelle hinzugefügt ich denke, es muss hinzugefügt werden) Und dann muss der Controller aktualisiert werden, um merge_vars => ('CNTRCODE' => $ _POST ['cntrcode']), – m00n