Ответы
Решено так (с POST запросом). Вписано в callback:
$post = array(
'query' => array(
'param1' => $form_state['values']['field'],
...
)
);
ctools_include('ajax');
ctools_add_js('ajax-responder');
$commands[] = ctools_ajax_command_redirect('http://bla-bla', 0, $post);
print ajax_render($commands);
exit;
drupal_http_request() + drupal_goto().
А если надо редирект как с GET, чтобы юзер ушел на страницу с параметрами POST, то скорее всего это просто невозможно. PHP просто не умеет такое делать.
Можно только создать форму, которая будет слать запрос (там ведь браузер отсылает POST с данными, пыха лишь принимает) с данными и через js принудительно делать .submit() - вот такой вот костыль. Иначе никак, тут только костыли.
Если же ты пересылаешь на своём сайте, и не хочешь светить данные гетом. Можно их в сессию ложить, с id формы и её build id, чтобы идентифецировать.
Через форму не получается. Форма ajax. Делаю так:
$form['#action'] = $url;
И убрал с сабмита #ajax. А то тупо rebuld срабатывает.
И почему то, по нажатию на сабмит первый раз всё равно происходит rebuild, хотя ajax на сабмите уже нету. Второй раз нажимаешь, тогда срабатывает.
А exit зачем? Я просто return делал.
Ну у меня структура и код такой, что надо завершить скрипт вообще.
При обычном использовании разницы всё равно почти не будет.