私はDrupal 8 Mailchimp SignUp Blockをajaxifyしようとしましたが、私はAjaxResponseで立ち往生しました。Drupal 8 Mailchimp Ajaxサインアップブロック
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...')
)
];
}
これは私のコールバック関数です:
function mailchimp_ajax_form_callback(array &$form, \Drupal\Core\Form\FormStateInterface $form_state) {
$response = new \Drupal\Core\Ajax\AjaxResponse();
$response->setContent('Response');
return $response;
}
しかし、クロームコンソールでのみエラーがあります:
これは私のフォームは、フックを変えている
Uncaught AjaxError:
An AJAX HTTP error occurred.
HTTP Result Code: 200
Debugging information follows.
Path: /node?ajax_form=1
StatusText: OK
ResponseText: Response
申し込み私の質問はどのように私はmailchimp応答を取得し、有効なAjaxResponseに入れることができますか?
setContentをsetDataに変更すると、次のエラーが発生します: 'Uncaught SyntaxError:Unexpected token R'です。サブスクリプションは、質問に書いたように動作しますが、コールバック関数のMailchimp Serverからクライアントに返すことができるレスポンスはどのようにして得られますか? – bambamboole
'setData'メソッドに'配列 'を与えないと 'SyntaxError'が来ます。今、私ははい、にsetData()はJSONとしてエンコードされ、バックに要求をトリガあなたのJavaScriptに渡される配列を期待 'MailchimpSignupPageForm' – bambamboole
の' submitForm'法で呼び出したmailchimp_subscribe機能からの応答を必要とします最初の場所。そしてあなたは直接subscribe関数を呼び出すことができるはずです。あなたはフォームのハンドラを試すことができますが、私はそれがあなたの言いたいことや反応をしてくれるかどうかはわかりません。 – acrosman