モジュールがあります。ユーザーがリンクをクリックすると、Ajax対応の送信ボタンがあるダイアログに新しいフォームが読み込まれます。私のダイアログでは、drupalのヘッダーやフッターなど全体を表示したくありません。私が表示しているのは、その新しいフォームの内容だけです。したがって、私のフォームは次のようにjson経由で出力されます。
$json['html'] = drupal_render(drupal_get_form('my_form'));
drupal_json_output($json);
これは私が望むように機能し、フォームの内容のみが表示されます。ただし、これが発生した場合、ajaxが有効になっているそのフォームの送信ボタンはajaxを介して送信されません。代わりに、通常のボタンのように送信し、別のページの同じフォームに移動します。
フォームが正常に出力および表示され、ヘッダーとフッターが次のようになっている場合:
$output = drupal_get_form('my_form');
return $output;
すべてが正常に機能し、送信ボタンは「ajax対応」です。
新しいコンテンツを読み込んでいて、これらの新しいフォームコンテンツに動作が関連付けられていなかったことが原因である可能性があります。だから私のjsファイルでは、私もこれをしました:
$('a.my_link', context).click(function() {
//processing done here
$('#my_modal_dialog').html(jsondata['html']);
}, "json");
Drupal.attachBehaviors($('#my_modal_dialog'));
その少しの追加でも、問題は修正されませんでした。フォームが正常に出力された場合、ボタンがajaxボタンとして機能し、フォームのコンテンツのみが表示された場合、ajaxが機能しないのはなぜか疑問に思います。
誰かが答えを持ってくれることを願っています...よろしくお願いします。