Ich versuche den Drupal 8 Mailchimp SignUp Block zu ajaxifizieren, aber ich blieb bei der AjaxResponse.Drupal 8 Mailchimp Ajax Signup Block
Das ist mein Formular Haken ändern:
function mailchimp_ajax_form_form_alter(&$form, \Drupal\Core\Form\FormStateInterface &$form_state, $form_id) {
if ($form_id != 'mailchimp_signup_subscribe_block_form') {
return;
}
$form['submit']['#ajax'] = [
'callback' => 'mailchimp_ajax_form_callback',
'prevent' => 'click',
'progress' => array(
'type' => 'throbber',
'message' => t('Submitting data...')
)
];
}
Dies ist meine Callback-Funktion:
function mailchimp_ajax_form_callback(array &$form, \Drupal\Core\Form\FormStateInterface $form_state) {
$response = new \Drupal\Core\Ajax\AjaxResponse();
$response->setContent('Response');
return $response;
}
Aber in Chrome-Konsole gibt es nur einen Fehler:
Uncaught AjaxError:
An AJAX HTTP error occurred.
HTTP Result Code: 200
Debugging information follows.
Path: /node?ajax_form=1
StatusText: OK
ResponseText: Response
Das Anmelden funktioniert, aber meine Frage ist, wie kann ich die Mailchimp Antwort erhalten und in eine gültige AjaxResponse setzen?
Wenn ich SetContent zu SetData ändern, gibt es den folgenden Fehler: 'Uncaught SyntaxError: Unerwartete Token R'. Das Abonnement funktioniert, wie ich in der Frage geschrieben habe, aber wie bekomme ich die Antwort vom Mailchimp Server in der Rückruffunktion, die ich an den Client zurücksenden kann? – bambamboole
Der 'SyntaxError' kommt, wenn Sie der' setData' Methode kein 'array' zur Verfügung stellen. Jetzt brauche ich nur noch die Antwort von der mailchimp_subscribe-Funktion, die durch die 'submitForm'-Methode des' MailchimpSignupPageForm' aufgerufen wird. – bambamboole
Ja, setData() erwartet ein Array, das als JSON kodiert und an Ihr JavaScript zurückgegeben wird, das die Anfrage ausgelöst hat den ersten Platz. Und Sie sollten die Subscribe-Funktion direkt aufrufen können. Sie können den Handler für das Formular versuchen, aber ich weiß nicht, ob Sie das tun, was Sie wollen, in Bezug auf die Antwort. – acrosman