Вы здесь

POST запрос с редиректом через ajax

1

Как отправить POST запрос с преходом на эту же страницу?
drupal_http_request не предлагать, так как он только возвращает ответ сервера в переменную, а надо сделать аналогию обычного GET-запроса.

Версия Drupal: 
7.x
Категория: 
AJAX
Вопрос задан 06.05.2015 - 04:04
Аватар пользователя SAM
SAM
212

Ответы

0

Решено так (с 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;
Ответ дан 07.05.2015 - 07:46
Аватар пользователя SAM
SAM
212

Ну у меня структура и код такой, что надо завершить скрипт вообще.
При обычном использовании разницы всё равно почти не будет.

Комментарий оставлен 08.05.2015 - 04:58
1

drupal_http_request() + drupal_goto().

А если надо редирект как с GET, чтобы юзер ушел на страницу с параметрами POST, то скорее всего это просто невозможно. PHP просто не умеет такое делать.

Можно только создать форму, которая будет слать запрос (там ведь браузер отсылает POST с данными, пыха лишь принимает) с данными и через js принудительно делать .submit() - вот такой вот костыль. Иначе никак, тут только костыли.

Если же ты пересылаешь на своём сайте, и не хочешь светить данные гетом. Можно их в сессию ложить, с id формы и её build id, чтобы идентифецировать.

Ответ дан 06.05.2015 - 07:45
Аватар пользователя Niklan
Niklan
445

Через форму не получается. Форма ajax. Делаю так:

$form['#action'] = $url;

И убрал с сабмита #ajax. А то тупо rebuld срабатывает.
И почему то, по нажатию на сабмит первый раз всё равно происходит rebuild, хотя ajax на сабмите уже нету. Второй раз нажимаешь, тогда срабатывает.

Комментарий оставлен 06.05.2015 - 08:50