Ajaxコールバック関数でページをリダイレクトしたいのですが、ajaxコールバック関数でリダイレクトに何も機能しません( "header"、 "drupal_goto"など)。
それには2つの方法があり、最も適切なもの(javascriptを介してDrupal.behaviorsオブジェクトを追加する)は以下の通りです
(function ($) {
Drupal.behaviors.custom_redirect = {
attach: function() {
// Replace he form id and the select id in selecotor below.
$("form#form_id select#select_id").change(function(e) {
e.stopPropagation();
// Path where you want to redirect.
var redirect_url = 'YOUR_REDIRECT_URL';
window.location.pathname = redirect_url;
});
}
};
}(jQuery));
ただし、特に上記を実行したい場合は、PHPコード/カスタムモジュールよりも、次のスニペットを追加してみてください( ctools ajaxリダイレクトコマンドを使用 )をajaxに追加してください)。コールバック関数:
$redirect_url = 'YOUR_REDIRECT_URL';
ctools_include('ajax');
ctools_add_js('ajax-responder');
$commands[] = ctools_ajax_command_redirect($redirect_url);
print ajax_render($commands);
exit;
ctools がインストールされている場合(ほぼすべてのDrupalサイトが行う))、 ctools_ajax_command_redirect()
を使用できます。あなたのAJAXコールバックで、例えば.
ctools_include('ajax');
$commands[] = ctools_ajax_command_redirect('path/to/redirect');
return array('#type' => 'ajax', '#commands' => $commands);