it-swarm.com.de

So brechen Sie die Ajax-Anforderung ab und leiten sie im Ajax-Rückruf des Formularelements um

Ich möchte die Seite in der Ajax-Rückruffunktion umleiten, und nichts (wie "Header", "drupal_goto" usw.) funktioniert für die Umleitung in der Ajax-Rückruffunktion.

5
user21139

Es gibt zwei Methoden dafür und die am besten geeignete (Hinzufügen eines Drupal.behaviors-Objekts über Javascript) ist wie folgt

(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));

Wenn Sie jedoch das oben genannte in Ihrem PHP Code/benutzerdefiniertes Modul) ausführen möchten, können Sie versuchen, Ihrem Ajax das folgende Snippet ( mit dem Befehl ctools ajax redirect ) hinzuzufügen Rückruffunktion:

$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;
7
Ankit Agrawal

Wenn Sie ctools installiert haben (fast alle Drupal Websites)), können Sie ctools_ajax_command_redirect() verwenden in Ihrem AJAX Rückruf, z.

ctools_include('ajax');
$commands[] = ctools_ajax_command_redirect('path/to/redirect');
return array('#type' => 'ajax', '#commands' => $commands);
7
Clive